gpt4 book ai didi

C++ 二进制流

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:05:46 30 4
gpt4 key购买 nike

我一定是遗漏了一些简单的东西,但我正在尝试用 C++ 编写和读取二进制文件。

    ofstream file3("C:\\data2.txt", ios::out | ios::binary);
for (int i = 0; i < 100; i++) {
file3.write((char*)(&i), sizeof(int));
}

ifstream file4("C:\\data2.txt", ios::in | ios::binary);

int temp;
while (!file4.eof()) {
file4.read((char*)(&temp), sizeof(int));
cout << temp << endl;
}

当使用十六进制编辑器查看时,该文件看起来像是正确创建的。然而,当我去阅读文件时,它读取了 1 个随机垃圾值并退出,而不是列出所有数字。

更新

我根据评论进行了一些更新,现在一切似乎都很好。在 Windows 上,关闭产生了影响,我确实修复了循环条件。

    ofstream file3("C:\\data2.txt", ios::out | ios::binary);
for (int i = 0; i < 100; i++) {
file3.write((char*)(&i), sizeof(int));
}

file3.close();
ifstream file4("C:\\data2.txt", ios::in | ios::binary);

//cout << file4.eof();
int temp;
while (!file4.read((char*)(&temp), sizeof(int)).eof()) {
cout << temp << endl;
}

最佳答案

您可能没有写入 c:\\file 的权限,所以您应该检查是否可以。关于使用 .eof() 参见 this topic .最后,您可能希望在再次打开文件进行阅读之前关闭该文件。这是你的例子调整:

#include<iostream>
#include<fstream>

int main()
{
std::ofstream file3("data2.txt", std::ios::binary);
if (file3)
{
for (int i = 0; i < 100; i++)
{
file3.write((char*)(&i), sizeof(int));
}
file3.close();
}

std::ifstream file4("data2.txt", std::ios::binary);

int temp;
while (file4)
{
file4.read((char*)(&temp), sizeof(int));
std::cout << temp << std::endl;
}
}

演示:http://coliru.stacked-crooked.com/view?id=8f519fcd05879855

关于C++ 二进制流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588333/

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