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:
Programa para leer#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)); }
Código:
me funcionan perfectamente pero si en la estructura quito el char y cambio a string de c++ me da fallo de segmentación asi:#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; }
programa para escribir
Código:
programa para leer#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)); }
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; }