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