好的,我有
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)上。
为什么会发生这种情况?这是标准行为,我做错了什么或者某处有错误吗?
答案 0 :(得分:46)
您可能希望使用
指定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
。
答案 1 :(得分:20)
to_string适用于最新版本的C ++版本。对于旧版本,您可以尝试使用此功能
#include <string>
#include <sstream>
template <typename T>
std::string ToString(T val)
{
std::stringstream stream;
stream << val;
return stream.str();
}
通过添加模板,您也可以使用任何数据类型。
您必须在此处加入#include<sstream>
。