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?
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.
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.