Ayuda codigo convertir numero entero a string

Iniciado por NanoTech, 3 Abril 2014, 19:52 PM

0 Miembros y 1 Visitante están viendo este tema.

NanoTech

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

vangodp

a que te refieres con convertir a un string?? ¿¿100 = "cien"?? :huh:

NanoTech

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 .. 

eferion

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.

amchacon

Como anotación, te diré que eso ya está implementado en la librería estándar:
Código (cpp) [Seleccionar]
#include <sstream>

//...

stringstream linea;
linea<<Numero;

cout<<linea.str()<<endl;
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

SrCooper

La manera más sencilla (utilizando C++11) sería esta:
Código (cpp) [Seleccionar]

std::string linea = std::to_string(42);


Un saludo :D

ivancea96

#6
Solo un par de correcciones:

Código (cpp) [Seleccionar]
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;
}

vangodp

ves si te explica bien te entierran en respuestas jeje :laugh:
Este es el mejor foro ^^  ;-)

ivancea96

Creo que se explicó bastante bien, Vangodp. Si lo tuyo son ganas de... e.e

leosansan

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:
Código (cpp) [Seleccionar]
#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!.