gpt4 book ai didi

c++ - 将一组整数写入 std::ofstream 并能够读回它们

转载 作者:太空狗 更新时间:2023-10-29 20:18:59 27 4
gpt4 key购买 nike

我需要以二进制模式将一堆无符号整数写入 std::ofstream:

std::ofstream f;
f.open("some path", std::ios::out | std::ios::binary);
// some loop
{
unsigned int k = get_k(); // may product numbers from 0 to 65535
f << k;
}
f.close();

它们被“按原样”写入输出文件,没有任何定界符。因此,当我尝试使用 std::ifstream 读回它们(期望得到我写的内容)时,我得到了非常奇怪的值。我做错了什么?

或者我应该在任何添加的数字之后将 ' ' (空格)放入流中以将它们分开?

谢谢。

最佳答案

您正在使用 operator<<()它将格式化的文本输出到流中。因此,您将明文写入二进制文件,这有点违背了以二进制模式写入的目的。尝试在文本编辑器中打开输出文件并亲自查看。

您有两个选择:以文本模式写入并用空格分隔您的值(因为在使用格式化输出时以二进制模式写入会产生误导),或者使用流的 write()类型转换法。

f.write(reinterpret_cast<char*>(&k), sizeof(int));
// ...
f.read(reinterpret_cast<char*>(&k), sizeof(int));

我个人更喜欢以文本模式写作。这意味着拥有更简洁的代码和可移植的输出文件。如果必须,您可以压缩文件。

关于c++ - 将一组整数写入 std::ofstream 并能够读回它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478121/

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