如何跨平台转换char *到long long(64位)?

时间:2011-09-12 13:12:42

标签: c++ parsing cross-platform long-long

如何将char *字符串转换为long long(64位)整数?

我使用的是MSVC和GCC编译器,我的平台是Windows,Linux和MAC OS。

感谢。

5 个答案:

答案 0 :(得分:3)

使用strtoull表示无符号长号,strtoll表示签名长号。在任何Unix(Linux,Mac OS X)上,键入man strtoullman strtoll以获取其描述。由于两者都是C99标准的一部分,因此它们应该可以在任何支持C的系统上使用.Linux手册页也have examples on how to use them

答案 1 :(得分:3)

对于带有支持long long int的编译器的C ++,我会使用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;

答案 2 :(得分:2)

long long int i;

if(sscanf(string, "%lld", &i) == 1) { ... }

答案 3 :(得分:0)

boost::lexical_cast可能是最简单的(在代码中)。有关详细信息,请参阅http://www.boost.org/doc/libs/1_47_0/libs/conversion/lexical_cast.htm。或者使用stringstream来解析数值。

答案 4 :(得分:0)

 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);