Okay, so I have
好的,我有
tmp.cpp:
tmp.cpp:
#include <string>
int main()
{
std::to_string(0);
return 0;
}
But when I try to compile I get:
但当我试图编译时,我得到:
$ 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);
^
I'm running g++ version 4.8.1. Unlike all the other references to this error that I found out there, I am not using MinGW, I'm on Linux (3.11.2).
我运行的是g++版本4.8.1。与我在那里发现的对这个错误的所有其他引用不同,我没有使用MinGW,我使用的是Linux(3.11.2)。
Any ideas why this is happening? Is this standard behaviour and I did something wrong or is there a bug somewhere?
有什么想法吗?这是标准的行为,我做错了什么,还是有错误?
2 个解决方案
#1
43
you may want to specify the C++ version with
您可能想要指定c++版本
g++ -std=c++11 tmp.cpp -o tmp
I don't have gcc 4.8.1 at hand , but in older versions of GCC, you can use
我手头没有gcc 4.8.1,但是在旧版本的gcc中,您可以使用它
g++ -std=c++0x tmp.cpp -o tmp
At least gcc 4.9.2 I believe also support part of C++14 by specifying
我认为至少通过指定还可以支持c++ 14的一部分
g++ -std=c++1y tmp.cpp -o tmp
Update: gcc 5.3.0 (I am using the cygwin version) supports both -std=c++14
and -std=c++17
now.
更新:gcc 5.3.0(我正在使用cygwin版本)同时支持-std=c++14和-std=c++17。
#2
18
to_string works with the latest C++ versions like version 11. For older versions you can try using this function
to_string使用最新的c++版本,如version 11。对于旧版本,您可以尝试使用此函数
#include <string>
#include <sstream>
template <typename T>
std::string ToString(T val)
{
std::stringstream stream;
stream << val;
return stream.str();
}
By adding a template you can use any data type too. You have to include #include<sstream>
here.
通过添加模板,您也可以使用任何数据类型。这里必须包含#include
#1
43
you may want to specify the C++ version with
您可能想要指定c++版本
g++ -std=c++11 tmp.cpp -o tmp
I don't have gcc 4.8.1 at hand , but in older versions of GCC, you can use
我手头没有gcc 4.8.1,但是在旧版本的gcc中,您可以使用它
g++ -std=c++0x tmp.cpp -o tmp
At least gcc 4.9.2 I believe also support part of C++14 by specifying
我认为至少通过指定还可以支持c++ 14的一部分
g++ -std=c++1y tmp.cpp -o tmp
Update: gcc 5.3.0 (I am using the cygwin version) supports both -std=c++14
and -std=c++17
now.
更新:gcc 5.3.0(我正在使用cygwin版本)同时支持-std=c++14和-std=c++17。
#2
18
to_string works with the latest C++ versions like version 11. For older versions you can try using this function
to_string使用最新的c++版本,如version 11。对于旧版本,您可以尝试使用此函数
#include <string>
#include <sstream>
template <typename T>
std::string ToString(T val)
{
std::stringstream stream;
stream << val;
return stream.str();
}
By adding a template you can use any data type too. You have to include #include<sstream>
here.
通过添加模板,您也可以使用任何数据类型。这里必须包含#include