Código
el problema, es que quiero leer los datos desde otro programa:
#include <iostream> #include <fstream> #include <cstring> using namespace std; struct tipoRegistro { string nombre; int edad; float altura; }; int main() { tipoRegistro pepe; ofstream fsalida("prueba.dat",ios::out | ios::binary); pepe.nombre="jose luis"; pepe.edad = 32; pepe.altura = 1.78; fsalida.write(reinterpret_cast<char *>(&pepe), sizeof(tipoRegistro)); fsalida.close(); return 0; }
Código
el problema es en este último programa, el encargado de leer los datos del archivo prueva.dat.
#include <iostream> #include <fstream> #include <cstring> using namespace std; struct tipoRegistro { string nombre; int edad; float altura; }; int main() { tipoRegistro pepe; ifstream fentrada("prueba.dat", ios::in | ios::binary); fentrada.read(reinterpret_cast<char *>(&pepe), sizeof(tipoRegistro)); cout <<pepe.nombre <<endl; cout << pepe.edad << endl; cout << pepe.altura << endl; fentrada.close(); cin.get(); return 0; }
compila perfecto, pero el error es en runtime.
nose exactamente que es lo que esta mal, ya que el programa tira unos beeps, algo de las variables de entorno programfiles y esas cosas y se cierra.
provado en dev c++ y en CodeBlocks , dando exactamente el mismo resultado, probablemente porque los dos ides usen el gcc.
porqué si uso todo en un mismo programa, pero quiero separar en un programa que lea los datos y otro que los escriba pasa esto?
el problema, es que si pongo todo en un mismo programa, no estaría leyendo los datos del fichero en si, ya que estarían ya cargados en ram.
me refiero a esto:
Código
así funciona perfecto, pero hacer esto no tiene ninguna utilidad.
#include <iostream> #include <fstream> #include <cstring> using namespace std; struct tipoRegistro { string nombre; int edad; float altura; }; int main() { tipoRegistro pepe; ofstream fsalida("prueba.dat",ios::out | ios::binary); pepe.nombre="jose luis"; pepe.edad = 32; pepe.altura = 1.78; fsalida.write(reinterpret_cast<char *>(&pepe), sizeof(tipoRegistro)); fsalida.close(); ifstream fentrada("prueba.dat", ios::in | ios::binary); fentrada.read(reinterpret_cast<char *>(&pepe), sizeof(tipoRegistro)); cout <<pepe.nombre <<endl; cout << pepe.edad << endl; cout << pepe.altura << endl; fentrada.close(); cin.get(); return 0; }
bueno, gracias por su tiempo y disculpen las molestias.
un saludo!