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



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

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

谢谢。

strtoull表示unsigned long long,用strtoll表示signed long long。在任何Unix (Linux、Mac OS X)上,输入man strtoullman strtoll以获取其描述。因为它们都是C99标准的一部分,所以它们应该可以在任何支持c语言的系统上使用。Linux手册页也有如何使用它们的示例。

对于编译器支持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;
long long int i;
if(sscanf(string, "%lld", &i) == 1) { ... }

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

 #include <stdlib.h>
 char serial[1000];
 long long var = _atoi64(serial);

相关内容

  • 没有找到相关文章

最新更新