2008-11-19 6 views
9

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

Заранее спасибо :)

+0

Кажется, этот вопрос всплывает каждую неделю или так: - | – 2008-11-20 03:40:57

ответ

5

Попробуйте _atoi64. Это займет char* и возвращает __int64.

+1

Покупатель берегитесь: atoi не безопасен по типу и не предлагает никаких ограничений! – Alan 2008-11-19 23:33:54

+0

Да, _atoi64, вероятно, не очень хороший выбор. Если вы используете .NET framework, почему бы не использовать ToInt64 для строки вместо char *. Если нет, я думаю, что strtol или equiv - это текущий стандартный способ перехода и безопаснее, чем atoi. – 2008-11-19 23:51:40

15

Самый простой способ заключается в использовании зЬй :: stringstream (это также самый типизированного ...)

std::stringstream sstr(mystr); 
__int64 val; 
sstr >> val; 

Вам может потребоваться целевой 64-битное приложение для этого работать.

C++ FAQ

7

Если вы используете импульс, lexical_cast это путь, на мой взгляд.

long long ll = boost::lexical_cast<long long>(mystr) 
1

Другой вариант - использование stoll(), найденного в библиотеке строк. Принимает строку C++.

long long ll = std::stoll(mystr); 

Docs

Смежные вопросы