gpt4 book ai didi

c++ - 以二进制形式将动态数组列表写入文件>

转载 作者:太空宇宙 更新时间:2023-11-04 15:28:49 26 4
gpt4 key购买 nike

我想写一个结构,它有一个整数 id 列表。该列表可以有不同的长度。

typedef  struct ss_iidx_node {
int totalFreq;
vector < int > docIDList;
}s_iidx_node;

现在,我希望将这个结构写到一个文件中并读回。我该怎么做?

写完了:

fwrite(&obj,sizeof(s_iidx_node),1,dat_fd2);

当我读回它时,它给出了垃圾值。似乎它只存储 STL vector 的起始位置和结束位置……阅读时哪个是垃圾?知道怎么做了

谢谢

最佳答案

您的代码根本不可移植。它试图将对象视为原始字节序列,这对于 C++ 标准中的非 POD 对象显然是未定义的(并且您的结构是非 POD,因为它包含非 POD 类型的成员 std::vector ).

在实践中, vector 类通常由 3 个字段组成:指向数据开始的指针、大小和容量。您看到的是构成写入文件的那些值的字节。

您应该考虑完全避免 C 风格的文件 I/O,并使用 C++ 流和 Boost Serialization library相反 - 它支持开箱即用的 STL 集合。

关于c++ - 以二进制形式将动态数组列表写入文件>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com