Cómo convertir int a string en C++: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

«Int a string» en C++: ¿por qué esta pregunta atormenta incluso a los experimentados?

\n

Imagine la situación: está escribiendo un programa en C++ que debe mostrar un número en pantalla y luego agregarle texto — por ejemplo, «Resultado: 42». O necesita guardar el ID de un usuario (int) en un archivo JSON como string. Parecería, ¿qué podría ser más simple? Pero aquí está el problema: en C++ no se puede simplemente escribir string s = 42;. El compilador dará un error.

\n

La pregunta «How can I convert int to string in C++?» es una de las más populares en Stack Overflow (cientos de miles de visitas). Y no es casualidad. A diferencia de Python o JavaScript, donde todo «se convierte mágicamente solo», C++ requiere una conversión de tipos explícita. ¡Pero no se preocupe! En este artículo analizaremos 5 formas probadas, desde las clásicas hasta el moderno C++20. Aprenderá qué método es más rápido, cuál es más conveniente y cuándo usar cada uno.

\n

¡Allá vamos!

\n\n

Forma n.º 1: std::to_string — moderna y simple (C++11 y posteriores)

\n

A partir de C++11, la biblioteca estándar incluye la función std::to_string. Esta es la forma más simple y legible de convertir int a string en C++.

\n
#include <iostream>\n#include <string>\n\nint main() {\n    int number = 2024;\n    std::string str = std::to_string(number);\n    std::cout << "Cadena: " << str << std::endl;  // Salida: Cadena: 2024\n    return 0;\n}
\n

Ventajas:

\n
    \n
  • Corto y claro — una línea de código
  • \n
  • Soporta int, long, float, double y otros tipos numéricos
  • \n
  • No necesita bibliotecas adicionales (excepto <string>)
  • \n
\n

Desventajas:

\n
    \n
  • Sin control sobre el formato (cantidad de dígitos, ceros a la izquierda)
  • \n
  • Más lento que los métodos de bajo nivel si se llama millones de veces
  • \n
\n

Cuándo usarlo: En el 90% de los casos. Para tareas comunes donde no se necesita un formato de salida específico, std::to_string es la elección ideal.

\n\n

Forma n.º 2: std::stringstream — flexible como una navaja suiza

\n

Si necesita no solo convertir un número, sino también formatearlo (agregar espacios, cambiar la base del sistema numérico), std::stringstream viene al rescate. Esta es una clase de la biblioteca <sstream> que funciona como una «cadena inteligente».

\n
#include <iostream>\n#include <sstream>\n#include <string>\n\nint main() {\n    int number = 255;\n    std::stringstream ss;\n    ss << "Valor: " << number << " (hexadecimal: " << std::hex << number << ")";\n    std::string result = ss.str();\n    std::cout << result << std::endl;\n    // Salida: Valor: 255 (hexadecimal: ff)\n    return 0;\n}
\n

Ventajas:

\n
    \n
  • Control total sobre el formato (std::hex, std::oct, std::setw, std::setprecision)
  • \n
  • Se pueden concatenar cadenas y números «sobre la marcha»
  • \n
\n

Desventajas:

\n
    \n
  • Más lento que std::to_string debido a la creación del objeto stringstream
  • \n
  • Requiere más código para una conversión simple
  • \n
\n

Cuándo usarlo: Cuando se necesita un formato complejo o conversión a diferentes sistemas numéricos.

\n\n

Forma n.º 3: sprintf y snprintf — el método antiguo de C

\n

Una forma antigua pero confiable, proveniente del lenguaje C. La función sprintf escribe una cadena formateada en un array de char. En C++ también se puede usar, pero hay que tener cuidado con el desbordamiento del búfer.

\n
#include <iostream>\n#include <cstdio>  // para sprintf\n#include <cstring> // para strlen\n\nint main() {\n    int number = 42;\n    char buffer[50];\n    sprintf(buffer, "%d", number);\n    std::string str(buffer);\n    std::cout << "Resultado: " << str << std::endl;\n    return 0;\n}
\n

Importante:

Blogs

Book Recommendations