to_string no es miembro de std, dice g++ (mingw)
Estoy creando un pequeño programa para recordar vocabulario en el que se me mostrarían palabras al azar en busca de significados. Quiero usar la biblioteca C++ estándar como nos dice Bjarne Stroustroup, pero me encontré con un problema aparentemente extraño desde el principio.
Quiero cambiar un long
número entero std::string
para poder almacenarlo en un archivo. He empleado to_string()
para lo mismo. El problema es que cuando lo compilo con g++ (versión 4.7.0 como se menciona en su indicador --version), dice:
PS C:\Users\Anurag\SkyDrive\College\Programs> g++ -std=c++0x ttd.cpp
ttd.cpp: In function 'int main()':
ttd.cpp:11:2: error: 'to_string' is not a member of 'std'
Mi programa que da este error es:
#include <string>
int main()
{
std::to_string(0);
return 0;
}
Pero sé que no puede ser porque la biblioteca msdn dice claramente que existe y una pregunta anterior sobre Stack Overflow (para g++ versión 4.5) dice que se puede activar con la -std=c++0x
bandera. ¿Qué estoy haciendo mal?
Este es un error conocido en MinGW. Bugzilla relevante . En la sección de comentarios puedes conseguir un parche para que funcione con MinGW.
Este problema se solucionó en distribuciones MinGW-w64 superiores a GCC 4.8.0 proporcionadas por el proyecto MinGW-w64 . A pesar del nombre, el proyecto proporciona cadenas de herramientas para 32 bits y 64 bits. La distribución Nuwen MinGW también resuelve este problema.
#include <string>
#include <sstream>
namespace patch
{
template < typename T > std::string to_string( const T& n )
{
std::ostringstream stm ;
stm << n ;
return stm.str() ;
}
}
#include <iostream>
int main()
{
std::cout << patch::to_string(1234) << '\n' << patch::to_string(1234.56) << '\n' ;
}
no olvides incluir#include <sstream>
Como se sugirió, esto puede ser un problema con la versión del compilador.
Intente usar el siguiente código para convertir a long
a std::string
:
#include <sstream>
#include <string>
#include <iostream>
int main() {
std::ostringstream ss;
long num = 123456;
ss << num;
std::cout << ss.str() << std::endl;
}