Я использую VS 2008 для создания проекта C++ DLL (не управляемого), и мне нужно преобразовать char * в длинный длинный тип. Есть простой способ сделать это?
Заранее спасибо :)





Попробуйте _atoi64.. Это берет char* и возвращает __int64.
Покупатель, будьте осторожны: atoi не является безопасным по типу и не предлагает никаких ограничений!
Да, _atoi64, вероятно, не лучший выбор. Если вы используете платформу .NET, почему бы не использовать ToInt64 в строке вместо char *. В противном случае я думаю, что strtol или его эквивалент - это текущий стандартный способ, и он безопаснее, чем atoi.
если вы думаете, что это хорошее решение (т.е. не беспокоитесь о безопасности типов / проверке привязки) и используете linux / osx, вы можете использовать atoll ().
Самый простой способ - использовать std :: stringstream (он также является наиболее типичным ...)
std::stringstream sstr(mystr);
__int64 val;
sstr >> val;
Для этого вам может потребоваться настроить 64-битное приложение.
Вы должны использовать std::int64_t вместо языкового расширения MSVC __int64.
Я не думаю, что std :: int64_t доступен на VC++ 2008
Если вы используете boost, на мой взгляд, лучше всего использовать lexical_cast.
long long ll = boost::lexical_cast<long long>(mystr)
Другой вариант - использовать stoll () из строковой библиотеки. Принимает строку C++.
long long ll = std::stoll(mystr);
Кажется, этот вопрос появляется примерно каждую неделю: - |