to_string not declared convertir c++ linux string c++11 g++

c++ - declared - to_string is not a member of std



"To_string" no es miembro de "std"? (3)

to_string funciona con las últimas versiones de C ++, como la versión 11. Para versiones anteriores, puede intentar usar esta función

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

Al agregar una plantilla, puede usar cualquier tipo de datos también. Debes incluir #include<sstream> aquí.

De acuerdo, entonces tengo

tmp.cpp:

#include <string> int main() { std::to_string(0); return 0; }

Pero cuando intento compilar obtengo:

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

Estoy ejecutando g ++ versión 4.8.1. A diferencia de todas las otras referencias a este error que descubrí, no estoy usando MinGW, estoy en Linux (3.11.2).

¿Alguna idea de por qué está pasando esto? ¿Es este comportamiento estándar e hice algo mal o hay un error en alguna parte?


es posible que desee especificar la versión de C ++ con

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

No tengo a mano gcc 4.8.1, pero en versiones anteriores de GCC, puede usar

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

Al menos gcc 4.9.2 Creo que también soporto parte de C ++ 14 especificando

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

Actualización: gcc 5.3.0 (estoy usando la versión de cygwin) ahora es compatible con -std=c++14 y -std=c++17 .


Inicialmente asumí que esto era una limitación del compilador MinGw de DevC ++. Pero, un pequeño cambio en las Options>Settings>Code Generation>Language standard> del compilador Options>Settings>Code Generation>Language standard> configurarlo en ISO C++ 11 .

Entonces debería funcionar.