我正在使用Visual Studio 2012,strtoull
未定义,而strtoul
工作正常。我已经包括
#include <stdio.h>
#include <stdlib.h>
但strtoull
仍未确定。
某些版本的 MSVC 没有strtoull
函数。
您可以尝试使用 _strtoui64
.
编辑:
如评论中所述,您也可以尝试切换到 C++11(如果可用)。
另一种处理方法(即可移植的,不需要 Boost,适用于 C++03):
std::string s = SOME_NUMER_IN_A_STRING_FORMAT;
unsigned long myValue = 0;
std::istringstream iss(s);
if (!(iss >> myValue))
{
// error parsing number
}
else
{
// myValue successfully parsed
}
请注意,如果要在 C++11 之前的编译器中使用 64 位整数,则必须使用特定于编译器的类型(流操作可能没有重载)。
我建议使用Boost Lexical Cast,因为它更便携。我认为它利用operator<<
和operator>>
来管理大多数转化。
boost::lexical_cast<unsigned long long>( aString );
左右