将类包含字符串写入二进制文件时出错

时间:2019-06-03 16:39:53

标签: c++ string

我有一个Book班,其中string name班。如果我使用char name[100]而不是string name,则没有错误,没有问题。但是我使用string name,然后将类Book写入二进制文件,析构函数~Book()后在结束程序中显示错误

enter image description here

我正在VS2017 Windows 10中运行调试模式。 这是我的代码:其他情况也不同,因为我使用类,它里面有字符串。

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

class Book
{
public:
Book() {}
~Book() {}
void Input() {
    cout << "\nBook's name : ";
    //cin.getline(name, 100);
    getline(cin, name);
    cout << "\nBook's id : ";
    cin >> id_book;
    cin.ignore();
}
void Output() {
    cout << "\nBook's name : " << name << endl;
    cout << "\nBook's id " << id_book << endl;
}
private:
//char name[100];
string name;
int id_book;
};
int main() {
Book book;
Book read_book;
book.Input();

ofstream ofile("test_b.dat", ios::binary | ios::trunc);
ofile.write(reinterpret_cast<char*>(&book), sizeof(book));
ofile.close();
// read file to book
ifstream ifile("test_b.dat", ios::binary);
while (ifile.read(reinterpret_cast<char*>(&read_book), 
sizeof(read_book)))
{
    read_book.Output();
}
ifile.close();
cout << "\ntest ok";
// error after destructor ~Book() of read_book object
}

0 个答案:

没有答案