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.