Hola, les pido una ayuda sobre un código que hice para convertir un numero entero a string. El código puede trabajar tanto con números negativos como positivos(aunque solo lo tengo implementado para números positivos). El tema es que no me arroja nada por la salida estandar..HELP! (soy aprendiz en C++)
#include <iostream>
#include <string>
using namespace std;
string intToString(const int x);
int main()
{
int Numero;
cout<<"Ingrese un numero entero: ";
cin>>Numero;
cout<<"El numero convertido en string es: "<<intToString(Numero)<<endl;
return 0;
}
string intToString(const int x)
{
string NumeroString;
int y=x,resto; //Copia del numero x
while(y!=0 && resto!=0)
{
resto=y%10;
y=y/10;
NumeroString.push_back((char)resto);
}
return NumeroString;
}
a que te refieres con convertir a un string?? ¿¿100 = "cien"?? :huh:
Sorry quizas me explique mal... La funcion debe retornar un objeto string conteniendo los caracteres del numero ingresado. Por ej. si se ingreso 2014 debe retornar los caracteres 2,0,1 y 4 ..ahora si se entendera mejor ..
el número 8, no es lo mismo que el carácter '8'.
Si miras cualquier tabla ASCII verás que el código que representa al carácter '8' es el 0x38. Lo he puesto en hexadecimal porque es más sencillo de ver.
Para convertir un dígito numérico en su correspondiente carácter has de sumarle 0x30. Si tu intentas imprimir directamente el número 8, estarás mandando a la salida estándar el código correspondiente a una pulsación de la tecla "retroceso" o "borrar", como mejor la identifiques.
Como anotación, te diré que eso ya está implementado en la librería estándar:
#include <sstream>
//...
stringstream linea;
linea<<Numero;
cout<<linea.str()<<endl;
La manera más sencilla (utilizando C++11) sería esta:
std::string linea = std::to_string(42);
Un saludo :D
Solo un par de correcciones:
string intToString(const int x)
{
string NumeroString;
int y=x,resto;
/** Aquí tendrías que comprobar si es negativo o no, para luego ponerle el signo '-' delante del número.
Eso, si quieres hacerlo con negativos también, claro **/
while(y!=0) // resto!=0 sobraba. Aquí no importa que número es el resto.
{
resto=y%10;
y=y/10;
NumeroString=(char)(resto+48) + NumeroString; //Con push_back lo pondríamos al revés
} //Lo de +48 es, como dijo Eferion, para convertir el numero a un char del 0 al 9 (48-57)
return NumeroString;
}
ves si te explica bien te entierran en respuestas jeje :laugh:
Este es el mejor foro ^^ ;-)
Creo que se explicó bastante bien, Vangodp. Si lo tuyo son ganas de... e.e
Cita de: amchacon en 3 Abril 2014, 20:43 PM
Como anotación, te diré que eso ya está implementado en la librería estándar:
#include <sstream>
//...
stringstream linea;
linea<<Numero;
cout<<linea.str()<<endl;
Pues tal como lo pones me sale un número raro, sin dejarme introducir el número.
Sé que el fallo lo tengo yo, pero ¿dónde?.
Saludos!.
Cita de: ivancea96 en 3 Abril 2014, 22:13 PM
Creo que se explicó bastante bien, Vangodp. Si lo tuyo son ganas de... e.e
No tengo ni idea a que te refieres con "ganas de...." Si me explicas mejor puedo contestarte como sea debido.
CitarHola, les pido una ayuda sobre un código que hice para convertir un numero entero a string. El código puede trabajar tanto con números negativos como positivos(aunque solo lo tengo implementado para números positivos). El tema es que no me arroja nada por la salida estandar..HELP! (soy aprendiz en C++)
No se tu seras muy inteligente y tal pero no he sabido entender lo que quería el compañero.
Pero si que veo tu intención. ¿Dime cual es el problema? :huh:
Si crees que te lo he dicho a ti por que mi mensaje va después del tuyo pues lo siento pero no iba contigo. :rolleyes:
Cita de: leosansan en 3 Abril 2014, 23:37 PM
Pues tal como lo pones me sale un número raro, sin dejarme introducir el número.
Sé que el fallo lo tengo yo, pero ¿dónde?.
Saludos!.
Pues sin ver el código completo no sé como decirte.
¿Numero esta inicializado no?
Cita de: vangodp en 3 Abril 2014, 23:59 PM
No tengo ni idea a que te refieres con "ganas de...." Si me explicas mejor puedo contestarte como sea debido.No se tu seras muy inteligente y tal pero no he sabido entender lo que quería el compañero.
Pero si que veo tu intención. ¿Dime cual es el problema? :huh:
Si crees que te lo he dicho a ti por que mi mensaje va después del tuyo pues lo siento pero no iba contigo. :rolleyes:
Sí que son ganas, sí e.e
Hola, por qué no pruebas con sprintf() (http://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm)?
int a;
char numero[20];
printf("Ingresa un numero entero: ");
scanf("%d ", &a);
sprintf(numero, "%d", a);
printf("Ingresaste: %s\n", numero);
Saludos!
Cita de: xiruko en 4 Abril 2014, 00:53 AM
Hola, por qué no pruebas con sprintf() (http://www.tutorialspoint.com/c_standard_library/c_function_sprintf.htm)?
...................................
Saludos!
Y que no se olvide de incluir la librería <cstdio> para tal fin.
Saludos!
Gracias pude corregir el problema y obtengo los resultados esperados..se pasaron compañero!! ;D