我正在使用visual studio 2012,strtoull
未定义strtoul
正常工作。我已经包括了
#include <stdio.h>
#include <stdlib.h>
但strtoull
仍未定义。
答案 0 :(得分:7)
某些版本的MSVC没有strtoull
功能。
您可以尝试使用_strtoui64
。
修改强>
如评论中所述,如果您可以使用,也可以尝试切换到C ++ 11。
答案 1 :(得分:1)
处理它的另一种方法(可移植,不需要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位整数,则必须使用特定于编译器的类型(对于流操作可能没有重载)。
答案 2 :(得分:0)
我建议使用Boost Lexical Cast,因为它更便携。我认为它使用operator<<
和operator>>
来管理大多数转化。
boost::lexical_cast<unsigned long long>( aString );
左右