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