¿Cómo convierto un long
a un string
en C++?¿Cómo convierto un largo en una cadena en C++?
Respuesta
Puede usar stringstream.
#include <sstream>
// ...
std::string number;
std::stringstream strstream;
strstream << 1L;
strstream >> number;
Por lo general, hay algunas funciones propietarias de C en la biblioteca estándar para que su compilador también lo haga. Sin embargo, prefiero las variantes más "portátiles".
La manera C de hacerlo sería con sprintf, pero eso no es muy seguro. En algunas bibliotecas hay nuevas versiones como sprintf_s que protege contra los desbordamientos del búfer.
Echa un vistazo std::stringstream
.
#include <sstream>
....
std::stringstream ss;
ss << a_long_int; // or any other type
std::string result=ss.str(); // use .str() to get a string back
Es std :: string, not std :: String. – avakar
Gracias - problema con los dedos. –
La forma en que normalmente lo hago es con sprintf. Así que por mucho que podría hacer el siguiente supuesto de que usted está en una arquitectura de 32 bits:
char buf[5] = {0}; // one extra byte for null
sprintf(buf, "%l", var_for_long);
-1. Mientras que un compilador de C++ compilará su código, ciertamente no se debe llamar C++. Además, dudo que 5 personajes sean suficientes. – avakar
Por favor, no defienda sprintf en este día y edad. ¿No tenemos suficientes exploits de desbordamiento de búfer? No es que este código parezca tener ninguno escrito, pero nunca se sabe cómo cambian las cosas. – philsquared
Phil, el búfer se desbordará por cualquier número por encima de 10000. – avakar
int main()
{
long mylong = 123456789;
string mystring;
stringstream mystream;
mystream << mylong;
mystring = mystream.str();
cout << mystring << "\n";
return 0;
}
Hay varias maneras. Lea The String Formatters of Manor Farm para una comparación en profundidad.
Ese es un buen artículo. – Skurmedel
Sí. Esto es al menos la tercera vez que lo he vinculado en SO. 8v) –
Bueno, si usted es fan de copiar y pegar, aquí está:
#include <sstream>
template <class T>
inline std::string to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str();
}
No sé qué tipo de tarea que es esto, pero es más probable que el profesor no quiero una respuesta en la que simplemente llame a una función existente "mágica" (aunque esa es la forma recomendada de hacerlo), pero él quiere ver si puede implementar esto por su cuenta.
En el pasado, mi profesor solía decir algo así como: "Quiero ver si puedes programar por ti mismo, no si puedes encontrarlo en el sistema". Bueno, lo equivocado que estaba;) ..
De todos modos, si el maestro es el mismo, aquí es de la manera difícil hacerlo ..
std::string LongToString(long value)
{
std::string output;
std::string sign;
if(value < 0)
{
sign + "-";
value = -value;
}
while(output.empty() || (value > 0))
{
output.push_front(value % 10 + '0')
value /= 10;
}
return sign + output;
}
se podría argumentar que el uso no es std::string
"de la manera difícil", pero supongo que lo que cuenta en el agorithm real.
Esta vez está bien usar funciones listas. Pero gracias por esta buena idea. –
¿De verdad? ¿Está comprobando si puedes encontrar una función en alguna parte? Sí, los tiempos han cambiado;) .. – beef2k
@ beef2k Aún mejor - se da cuenta de que sé OOP, me siento impresionado y no comprueba nada más. :) –
boost::lexical_cast<std::string>(my_long)
más aquí http://www.boost.org/doc/libs/1_39_0/libs/conversion/lexical_cast.htm
+1, aunque originalmente, lexical_cast hizo poco más que el ejemplo de cadena de caracteres aceptado (simplemente envuelto de manera más expresiva). – philsquared
Una de las cosas que no están cubiertos por nadie hasta el momento, para ayudarle a pensar sobre el problema aún más, es lo que formato debe mucho tomar cuando es arrojado a una cadena.
Solo eche un vistazo a un programa spreedsheet (como Calc/Excel). ¿Quieres que se redondee al millón más cercano, con corchetes si es negativo, siempre para mostrar el signo ... Es realmente el número una representación de otra cosa, en caso de que lo muestres en Oractal o Hex?
Las respuestas hasta ahora le han dado algunos resultados predeterminados, pero quizás no los correctos.
Si lo necesitaba, podría editar mi pregunta. :) –
Me encanta, le doy una respuesta considerada a la pregunta para ayudarme a pensar en la tarea en lugar de dar la respuesta que ya estaba allí y recibo un voto negativo, mientras tanto 'std :: stringstream' tiene un voto ascendente ... –
En C++ 11, en realidad existen funciones std :: to_string y std :: to_wstring en <string>.
string to_string(int val);
string to_string(long val);
string to_string(long long val);
string to_string(unsigned val);
string to_string(unsigned long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string (long double val);
Puede utilizar std::to_string en C++ 11
long val = 12345;
std::string my_val = std::to_string(val);
- 1. ¿Cómo convierto una cadena en un char * en C++?
- 2. ¿Cómo convierto un doble en una cadena en C++?
- 3. ¿Cómo convierto una cadena a un tipo int en C#?
- 4. ¿Cómo convierto nchar en cadena en C#?
- 5. ¿Cómo convierto una cadena en byte en C#?
- 6. ¿Cómo convierto un byte a un largo en Java?
- 7. OCaml - ¿Cómo convierto int en una cadena?
- 8. ¿Cómo convierto una cadena binaria en un número en Perl?
- 9. ¿Cómo convierto un entero en una cadena en Excel VBA?
- 10. En Erlang, ¿cómo convierto una Cadena en un valor binario?
- 11. ¿Cómo convierto una cadena en un buffer en Python 3.1?
- 12. ¿Cómo convierto una cadena como "Rojo" en una System.Windows.Media.Color?
- 13. ¿Cómo convierto una cadena de caracteres en una cadena wchar_t?
- 14. ¿Cómo convierto una cadena hexadecimal en un entero con signo?
- 15. ¿Cómo convierto un objeto org.w3c.dom.Document en una Cadena?
- 16. ¿Cómo convierto un InputStream a una cadena en Java?
- 17. ¿Cómo convierto un objeto Rails DateTime en una cadena XML?
- 18. Cómo convierto un nombre de función en una cadena
- 19. ¿Cómo convierto un UIColor en una cadena hexadecimal?
- 20. Coffeescript: ¿cómo convierto una cadena en un número?
- 21. ¿Cómo convierto una cadena en un método de clase?
- 22. ¿Cómo convierto una cadena en una representación en minúsculas?
- 23. ¿Cómo convierto una cadena en una lista en Io?
- 24. ¿Cómo convierto StreamReader a una cadena?
- 25. ¿Cómo convierto una cadena en un número entero en el objetivo C?
- 26. Cómo convertir largo sin signo a cadena
- 27. ¿Cómo convierto una matriz de bytes en una cadena?
- 28. ¿Cómo convierto una cadena ISO 8601 en una Delphi TDate?
- 29. ¿Cómo convierto caracteres de cadena en una lista?
- 30. ¿Cómo convierto una cadena JSON a una función en javascript?
Sólo un poco de peros ... Yo no diría que este "casting". – kbyrd
@krbyrd ¿podría decirme por qué? Yo soy un .NETist, C++ todavía se siente incómodo para mí. :) –
De acuerdo, esta es una conversión y no un elenco. – ralphtheninja