usar resueltos leer funciones ejercicios ejemplos dev convertir como caracteres cadenas cadena arreglo c++ string casting int

resueltos - entero para la conversión de cadenas/concatenación de cadenas enteras en C++-¿soluciones más compactas?



funciones de cadenas de caracteres en c++ (4)

¿Cuál es el problema con tener 3 líneas para convertir? Si necesita usar el mismo tipo de concatenación en cualquier momento, simplemente póngalo en una función y listo. Sería mejor que usar soluciones extrañas.

Cómo hacer un entero -> la conversión de cadena ha sido respondida muchas veces en internet ... sin embargo, estoy buscando la forma más compacta de "C ++" para hacer esto.

Como puede concatenar cadenas utilizando el operador + sobrecargado, sería preferible poder hacer algo en la línea de la concatenación python-ish x = (stringVariable + str (intVariable)), pero no sé si hay una manera canónica de hacer esto en C ++.

Las soluciones más comunes que veo son:

stringstream: si es posible, sería bueno no tener 3 líneas de código (declaración, escritura en la secuencia, conversión en cadena) solo para concatenar algunas letras y números.

itoa: esto funciona, pero estoy buscando una solución canónica de C ++. Además, creo que itoa es técnicamente no estándar, aunque podría estar equivocado.

Mejorar el formato / impulsar el reparto léxico: esto también funciona, pero ¿no hay nada en vainilla C ++ que haga el trabajo?


C ++ 11 tiene std::to_string , pero en C ++ 03 no hay "solución de llamada de función única". También boost::lexical_cast (aunque especializado para ciertos casos) y std::to_string finalmente llaman al operator<<(std::ostream&,T) para cualquier T que deberían convertir. Se trata de ser capaz de manejar genéricamente las cosas, y cuando op<< ya está allí, ¿por qué no reutilizarlo para crear una representación de cadena?


stringVariable + boost::lexical_cast<std::string>( intVariable ) haría el truco, pero no estoy seguro de que sea una buena idea. Incluso en Python, algo como ''{}{:6f}''.format( stringVariable, intVariable ) sería mucho más habitual.


#include <string>

Cadena a entero: int n = std::stoi(s);

Entero a la cadena: std::string s = std::to_string(n);