web-dev-qa-db-fra.com

"to_string" n'est pas membre de "std"?

D'accord, alors j'ai

tmp.cpp:

#include <string>

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

Mais lorsque j'essaie de compiler, je reçois:

$ 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);
     ^

J'utilise g ++ version 4.8.1. Contrairement à toutes les autres références à cette erreur que j'ai trouvées, je suis pas en utilisant MinGW, je suis sous Linux (3.11.2).

Des idées pourquoi cela se produit? Est-ce que ce comportement standard et j'ai fait quelque chose de mal ou est-ce qu'il y a un bug quelque part?

40
mueslo

vous voudrez peut-être spécifier la version C++ avec

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

Je n'ai pas gcc 4.8.1 sous la main, mais dans les anciennes versions de GCC, vous pouvez utiliser

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

Au moins gcc 4.9.2, je crois, prend également en charge une partie de C++ 14 en spécifiant

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

Mise à jour: gcc 5.3.0 (j'utilise la version de cygwin) prend en charge les deux -std=c++14 et -std=c++17 à présent.

48
CS Pei

to_string fonctionne avec les dernières versions de C++, comme la version 11. Pour les versions antérieures, vous pouvez essayer d'utiliser cette fonction

#include <string>
#include <sstream>

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

En ajoutant un modèle, vous pouvez également utiliser n'importe quel type de données. Vous devez inclure #include<sstream> ici.

20
Lasitha Konara