C++ 如何跨平台将char*转换为long-long(64位)?

C++ 如何跨平台将char*转换为long-long(64位)?,c++,parsing,cross-platform,long-long,C++,Parsing,Cross Platform,Long Long,如何将char*字符串转换为长(64位)整数 我使用MSVC和GCC编译器,我的平台是Windows、Linux和MAC OS 谢谢。使用strtoll表示无符号长字符,或使用strtoll表示有符号长字符。在任何Unix(Linux、Mac OS X)上,键入man strtoll或man strtoll以获取其说明。因为这两个都是C99标准的一部分,所以它们应该在支持C的任何系统上都可用。Linux的MAN页面也可以。< P> C++支持编译器>代码> long long int /COD>

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

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


谢谢。

使用
strtoll
表示无符号长字符,或使用
strtoll
表示有符号长字符。在任何Unix(Linux、Mac OS X)上,键入
man strtoll
man strtoll
以获取其说明。因为这两个都是C99标准的一部分,所以它们应该在支持C的任何系统上都可用。Linux的MAN页面也可以。

< P> C++支持编译器>代码> long long int /COD>,我将使用<代码> STD::例如:

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;

boost::lexical_cast
可能是最简单的(在代码中)。有关更多信息,请参阅。或者使用
stringstream
解析出数值。

\include
 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);
字符序列[1000]; 长变量=_atoi64(串行);
boost::lexical_cast(str)
当然,假设该平台上存在
long
?(C++标准不定义那个类型):但是我不想使用Boost库。有更好的方法吗?@Billy:long已经得到GCC和MSVC的支持了。@Amir:这并不意味着它是标准的。1。问题是标记C++。2.Windows上没有。
stroull
是否等同于Windows上的
stroull
。因为他想转换一个C字符串,所以我假设一个C函数就可以了。2.这当然是个问题。。。有人应该用MS来发送一个bug报告,这是一个C99函数。@西蒙C:相似但不相同。MS声称STRUTL不是C++函数,并提供了自己的扩展名为<代码>
 #include <stdlib.h>

 char serial[1000];

 long long var = _atoi64(serial);