web-dev-qa-db-ja.com

「to_string」は「std」のメンバーではありませんか?

さて、私は持っています

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を実行しています。私が見つけたこのエラーに対する他のすべての参照とは異なり、私はnot MinGWを使用しています。Linux(3.11.2)を使用しています。

これが起こっている理由は何ですか?これは標準的な動作ですか?何か間違ったことをしましたか、どこかにバグがありますか?

40
mueslo

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今。

48
CS Pei

to_stringは、バージョン11などの最新のC++バージョンで動作します。古いバージョンの場合は、この関数を使用してみてください。

#include <string>
#include <sstream>

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

テンプレートを追加すると、任意のデータ型も使用できます。ここに#include<sstream>を含める必要があります。

20
Lasitha Konara