45

好的,所以我有

tmp.cpp:

#include <string>

int main()
{
    std::to_string(0);
    return 0;
}

但是当我尝试编译时,我得到:

$ g++ tmp.cpp -o tmp
tmp.cpp: In function ‘int main()’:
tmp.cpp:5:5: error: ‘to_string’ is not a member of ‘std’
     std::to_string(0);
     ^

我正在运行 g++ 4.8.1 版。与我在那里发现的所有其他对这个错误的引用不同,我没有使用 MinGW,我使用的是 Linux (3.11.2)。

任何想法为什么会发生这种情况?这是标准行为,我做错了什么还是某处有错误?

4

2 回答 2

53

您可能需要指定 C++ 版本

g++ -std=c++11 tmp.cpp -o tmp

我手头没有 gcc 4.8.1,但是在旧版本的 GCC 中,您可以使用

g++ -std=c++0x tmp.cpp -o tmp

至少 gcc 4.9.2 我相信也通过指定支持 C++14 的一部分

g++ -std=c++1y tmp.cpp -o tmp

更新:gcc 5.3.0(我使用的是 cygwin 版本)现在支持-std=c++14两者-std=c++17

于 2013-10-01T17:42:49.200 回答
25

to_string 适用于最新的 C++ 版本,如版本 11。对于旧版本,您可以尝试使用此函数

#include <string>
#include <sstream>

template <typename T>
std::string ToString(T val)
{
    std::stringstream stream;
    stream << val;
    return stream.str();
}

通过添加模板,您也可以使用任何数据类型。你必须包括 #include<sstream>在这里。

于 2015-05-28T04:49:43.570 回答