Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda con archivos binarios y estructuras

Estas en el tema de Duda con archivos binarios y estructuras en el foro de C/C++ en Foros del Web. Hola, en un tema anterior habia preguntado como guardar una estructura y como leerla desde un archivo binario, eso ya lo pude haser pero tengo ...
  #1 (permalink)  
Antiguo 11/11/2008, 21:24
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años
Puntos: 2
Pregunta Duda con archivos binarios y estructuras

Hola, en un tema anterior habia preguntado como guardar una estructura y como leerla desde un archivo binario, eso ya lo pude haser pero tengo un problema
es cuando uso strings de c++ y no los char de c, me da fallo de segmentación cuando intento recuperar la estructura del archivo binario
por ejemplo:

programa para escribir:
Código:
#include <iostream>
#include <fstream>
using namespace std;

struct employee
{
    char name [20];
    int age;
    float salary;
} worker = { "Thar", 16, 99999 };

int main(void)
{


    ofstream emp_file("Employee.DAT", ios::binary);
    emp_file.write((char *) &worker, sizeof(employee));
}
Programa para leer
Código:
#include <iostream>
#include <fstream>
using namespace std;

struct employee
{
    char name[20];
    int age;
    float salary;
};

int main(void)
{
    struct employee worker;
    ifstream emp_file("Employee.DAT", ios::binary);
    emp_file.read((char *) &worker, sizeof(employee));
    cout << worker.name << endl;
    cout << worker.age << endl;
    cout << worker.salary << endl;
}
me funcionan perfectamente pero si en la estructura quito el char y cambio a string de c++ me da fallo de segmentación asi:

programa para escribir
Código:
#include <iostream>
#include <fstream>
using namespace std;

struct employee
{
    string name;
    int age;
    float salary;
} worker = { "Thar", 16, 99999 };

int main(void)
{


    ofstream emp_file("Employee.DAT", ios::binary);
    emp_file.write((char *) &worker, sizeof(employee));
}
programa para leer
Código:
#include <iostream>
#include <fstream>
using namespace std;

struct employee
{
    string name;
    int age;
    float salary;
};

int main(void)
{
    struct employee worker;
    ifstream emp_file("Employee.DAT", ios::binary);
    emp_file.read((char *) &worker, sizeof(employee));
    cout << worker.name << endl;
    cout << worker.age << endl;
    cout << worker.salary << endl;
}

Última edición por Fayca; 11/11/2008 a las 21:34 Razón: Pequeño error
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.