Tôi đang cố gắng tuần tự hóa một tập hợp các cấu trúc trong C++. Điều này làm việc tuyệt vời cho tất cả dữ liệu ngoại trừ một vector chứa trong cấu trúc của tôi. Tôi có thể ghi dữ liệu vào đĩa, và sau đó đọc tất cả dữ liệu vào bộ nhớ. Vấn đề duy nhất là khi tôi cố gắng truy cập vào một phần tử của vector, tôi nhận được một lỗi phân đoạn. Mã của tôi là dưới đây. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.Việc tuần tự hóa các cấu trúc phức tạp trong C++
Chương trình để ghi vào đĩa Chương trình
int main {
struct Student one;
strcpy(one.FullName, "Ernestine Waller");
strcpy(one.CompleteAddress, "824 Larson Drv, Silver Spring, MD 20910");
one.Gender = 'F';
one.LivesInASingleParentHome = true;
one.grades.push_back(80);
one.grades.push_back(90);
ofstream ofs("fifthgrade.ros", ios::binary);
ofs.write((char *)&one, sizeof(one));
ofs.close();
}
để đọc từ đĩa
int main {
struct Student *two = (struct Student *) malloc(sizeof(struct Student));
ifstream ifs("fifthgrade.ros", ios::binary);
//cout << "Size of struct: " << size << endl;
ifs.read((char *)two, sizeof(struct Student));
cout << "Student Name: " << two->FullName << endl;
cout << "First Grade: " << two->grades[0] << endl;
cout << "Second Grade: " << two->grades[1] << endl;
ifs.close();
return 0;
}
http://www.parashift.com/c++-faq-lite/serialization.html – DumbCoder
Tăng cường tuần tự hóa: http://www.boost.org/doc/libs/1_44_0/libs/serialization/doc/index. html – karlphillip
Vui lòng bao gồm khai báo cho 'Student' –