C++ 如何跨平台将char*转换为long-long(64位)?
如何将char*字符串转换为长(64位)整数 我使用MSVC和GCC编译器,我的平台是Windows、Linux和MAC OSC++ 如何跨平台将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>
谢谢。使用
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);