Jump to content

Pregunta basica basica


soulless
 Share

Recommended Posts

Saludos,

 

Imaginemos que tengo un numero entero (el 250) que escribo en binario en un fichero. ¿Cómo leo ese dato del fichero y lo muestro en pantalla para que aparezca 250?

 

// Variable de lectura
char *lectura;

// Lee entero
filein.read ((char *)(&lectura),sizeof(int));

En este punto tengo 250 en binario en la variable char *lectura. ¿Cómo puedo pasarla a entero como 250?.

 

Gracias por adelantado.

Link to comment
Share on other sites

Ya lo he conseguido para enteros (int):

// PARA ENTERO
int Fichero = 7;
char* caracter;
int Pantalla;

// Escritura
ofstream fileout;
fileout.open("/Users/Fernando/Desktop/entero.bin",ios::binary|ios::out);
fileout.write((char *) &Fichero, sizeof(int));
fileout.close();

// Lectura
fstream filein;
filein.open("/Users/Fernando/Desktop/entero.bin",ios::binary|ios::in);
filein.read((char *) &caracter,sizeof(int));
Pantalla = (int) caracter;
cout << Pantalla;

filein.close();

Solo hay que especificar los flags de fichero de lectura o escritura (ios::in, ios::out) y hacer un cast de char* a int.

 

Sin embargo, suponiendo que declaro Pantalla como float, no me funciona la línea:

Pantalla = (float) caracter;

 

¿Alguna idea?

Link to comment
Share on other sites

Joe! Soy tan bueno que me respondo a mi mismo!! :lol:

 

No en serio, para float, double… solo hace falta usar memcpy:

// PARA FLOTANTE
float Fichero = 7.5;
char* caracter;
float Pantalla;

// Escritura
ofstream fileout;
fileout.open("/Users/Fernando/Desktop/entero.bin",ios::binary|ios::out);
fileout.write((char *) &Fichero, sizeof(float));
fileout.close();

// Lectura
fstream filein;
filein.open("/Users/Fernando/Desktop/entero.bin",ios::binary|ios::in);
filein.read((char *) &caracter,sizeof(float));
memcpy(&Pantalla,&caracter,sizeof(float));
cout << Pantalla;

filein.close();

Espero que le sea útil a alguien.

Link to comment
Share on other sites

  • 10 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.