gpt4 book ai didi

c++ - ofstream << 运算符没有将正确的大小写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 16:02:08 32 4
gpt4 key购买 nike

当涉及到这个时,我对文件 IO 非常不确定,我真的很困惑。当我使用插入流运算符将一些短整数压入文件时,文件的大小不是我所期望的:

std::ofstream outFile("myFile.raw", std::ios::binary | std::ios::out);

std::vector<short> list;
for (int i = 0; i < 100; ++i) list.push_back(1);
for (auto i : list) outFile << i;
outFile.close();

这将创建一个 100 字节大的文件。我不明白,short 应该是两个字节。文档显示 << 运算符针对许多不同类型进行了重载,因此我认为这写入了正确的数据类型。我猜不会。

谢谢。

最佳答案

您正在使用 formatted output .

short int 被写成数字。每个数字都是 1,这是单个字节的单个 char

所以总数是 100。如果您有包含两位数的 short int,比如说 22,那么大小就是 200。


作为替代方案,您可以使用 unformatted output或者您可以将数据转换为 char,它与您设置的 binary 标志一起将写入数据而不对其进行格式化。编写原始 char 时要记住的一点是,您必须考虑多少字节和 how you want to order the bytes。在文件中。


一般来说,格式化输出和输入会更方便。作为使用原始 char 编写文件的替代方法,最好查看 serialization .

关于c++ - ofstream << 运算符没有将正确的大小写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41707565/

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