最近我遇到了一个关于将数据读入A类向量的烦人的错误。我编写了一个简单的程序来测试主要功能中的fstream,它没有任何问题。 但是当我在Book.h中编写Book类并在Book.cpp中实现Class时,然后尝试将Book的向量写入带有ofstream的文件中,没有发生错误。
//write data
ofstream output("book.bat",ios::binary);
if( !output ){
exit(-1);
}
output.write(reinterpret_cast<char*>(&books[0]),sizeof(Book)*books.size());
output.close();
//read data
ifstream input("book.bat",ios::binary);
if( !input ){
exit(-1);
}
Book tmp;
while( input.read(reinterpret_cast<char*>(&tmp),sizeof(Book)) ) {
books.push_back(tmp);
}
input.close();
不幸的是,当程序运行到将文件读入向量的步骤时,发生了错误。搜索了几个小时后,我没有处理这个错误。 谢谢你的帮助。
答案 0 :(得分:0)
对于类作为封装内部表示的类型的观点,使用内存方向读取/写入和类型的大小是错误。这可能适用于POD类型,但如果book是一个类型,其中一些数据作为动态内存的指针,则代码将无效。