将包含字符串的对象写入文件的有效解决方案?

时间:2015-07-23 14:17:15

标签: string c++11 file-io new-operator

有人可以解释下面代码第二行的含义吗?

Book *B;
B=(Book *)new char[sizeof(Book)];
f1.read((char*)B,sizeof(Book));

这是我发现将类Book(包含std::strings)的对象写入文件的建议之一。
PS:它有效!!

1 个答案:

答案 0 :(得分:1)

您包含的代码不会"写对象。"它从f1读取一个字节数组。

该代码也不正确C ++。您可以从不执行包含其他对象的C ++对象的字节副本,因为它们可能包含指针或虚函数表。从文件中复制它们更糟糕,因为指针将指向甚至不再存在的内存。而且,仅供参考,std::string肯定有一个指针。