C ++ strtoull函数未定义?

时间:2014-02-20 15:05:51

标签: c++ visual-c++

我正在使用visual studio 2012,strtoull未定义strtoul正常工作。我已经包括了

#include <stdio.h>
#include <stdlib.h>

strtoull仍未定义。

3 个答案:

答案 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 );左右