【发布时间】:2021-05-25 02:46:40
【问题描述】:
我在用 C++ 读写文件时遇到问题。我的问题围绕着尝试保存具有属性向量的对象。调试时,对象似乎存储正确,但在读回时,向量值为 0,但向量的大小是正确的。在做了一些研究之后,我知道我可能应该在某个地方进行序列化。我的问题是我不知道我的所有研究如何以及我的所有研究都将我引向图书馆提升。有人可以指出我正确的方向吗?以下是我的代码的 sn-ps。
MyData.h
class MyData {
public:
std::vector<float> scores;
MyData(vector<float> scores);
MyData();
};
这样写到文件中:
MyData mdata(*vector here*);
std::ofstream file_obj("foo.txt");
// Writing the object's data in file
file_obj.write((char*)&mdata, sizeof(mdata));
std::cout << "data saved!";
这样读:
MyData obj;
// Reading from file into object "obj"
file_obj.read((char*)&obj, sizeof(obj));
// Checking till we have the feed
while (!file_obj.eof()) {
// Checking further
file_obj.read((char*)&obj, sizeof(obj));
}
【问题讨论】:
-
首先,你应该以binary模式打开你的文件。其次,写入和读取指向文件的指针是危险的。第三,由于与第二点相关的原因,您的实际数据没有被写入,因为原始对象数据本身仅管理指向堆中内容的指针。写入这些指针不会写入它们指向的数据。阅读对象序列化。
-
在互联网上搜索“C++ 序列化”。
-
注明。谢谢你的信息。
标签: c++ file class object vector