¿como convertir de int a char en C++?

Iniciado por ApOkAlizE, 28 Noviembre 2011, 20:44 PM

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

ApOkAlizE

Pues me he encontrado muchas veces que alguna funcion devuelve un int i se trata de pasarlo a char pero sin variar su contenido, por ejemplo al hacer esto.
int x;
x=system(dir");
char y[300];
*y=(char)x;
FILE * F;
F=fopen("prueva.txt","w");
fputs(y,F);
close(F);
pues en casos como este system te devuelve un int y quieres pasarlo a char pero si lo pasas a char lo necesario esque el valor quedara intacto cosa que no hace, no me digais de usar otra alternativa porque yo no quiero que me den el pez, yo quiero aprender a pescar.
¿Sabeis algun metodo para convertir sin que varie el valor?
gracias.
Los virus informaticos son como las personas, hacen lo posible para destruir y hacen lo impossible para no ser destruidos... - ApOkAlizE

naderST

#1
Hay una función NO ESTÁNDAR llamada itoa() la puedes revisar aquí

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/

Personalmente te recomiendo que hagas tu propia función itoa que sea estándar.

EDIT:

Aquí tienes un código en C++ que convierte de entero a string:

Código (cpp) [Seleccionar]
string itoa(int n){
string rtn;
for(rtn="";n>0;rtn.insert(rtn.begin(),n%10+'0'),n/=10);
return rtn;
}

rir3760

Para empezar el fragmento que pones es C. No tienes porque convertirlo antes de enviarlo al archivo ya que puedes hacerlo directamente con:
x = system("dir");

/* ... */

fprintf(F, "%d\n", x);

Para leerlo solo tienes que utilizar fscanf.

Código (cpp) [Seleccionar]
string itoa(int n){
string rtn;
for(rtn="";n>0;rtn.insert(rtn.begin(),n%10+'0'),n/=10);
return rtn;
}

Un problema aqui es que devolveria una cadena vacia (no es necesaria la asignacion inicial ya que todo objeto de la clase string inicia asi) si el numero pasado fuera el cero.

Otra opcion es:
Código (cpp) [Seleccionar]
string itoa(int n)
{
string s;
char digit[] = "0123456789";

do {
s = digit[n % 10] + s;
}while ((n /= 10) > 0);

return s;
}


Otra forma es utilizando clase stringstream:
Código (cpp) [Seleccionar]
string itoa(int n)
{
stringstream ss;
string s;

ss << n;
ss >> s;

return s;
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language