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