Как кроссплатформенное преобразование char * в long long (64-bit)? - PullRequest
2 голосов
/ 12 сентября 2011

Как я могу преобразовать строку char * в длинное длинное (64-разрядное) целое число?

Я использую компиляторы MSVC и GCC, и мои платформы - Windows, Linux и MAC OS.

Спасибо.

Ответы [ 5 ]

3 голосов
/ 12 сентября 2011

Для C ++ с компилятором, который поддерживает long long int, я бы использовал объект std::istringstream. Например:

char* number_string;
//...code that initializes number_string

std::istringstream input_stream(number_string);
long long int i64_bit_type;
input_stream >> i64_bit_type;
3 голосов
/ 12 сентября 2011

Используйте strtoull для длинного длинного без знака или strtoll для длинного длинного со знаком.В любом Unix (Linux, Mac OS X) введите man strtoull или man strtoll, чтобы получить его описание.Так как оба являются частью стандарта C99, они должны быть доступны в любой системе, которая поддерживает C. Справочные страницы Linux также содержат примеры того, как их использовать .

2 голосов
/ 12 сентября 2011
long long int i;

if(sscanf(string, "%lld", &i) == 1) { ... }
0 голосов
/ 09 июня 2016
 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);
0 голосов
/ 12 сентября 2011

boost::lexical_cast, вероятно, самый простой (в коде). См. http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm для получения дополнительной информации. Альтернативно используйте stringstream для анализа числового значения.

...