C++二进制流
C++ Binary Stream
我在这里一定缺少一些简单的东西,但我正在尝试用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()
请参阅此主题。最后,您可能希望在再次打开文件进行读取之前将其关闭。这是您调整的示例:
#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
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 二进制搜索树叶数问题
- 如何将一个ostringstream十六进制字符串字符对转换为单个unit8t等价的二进制值
- 为什么二进制搜索在我的测试中不起作用
- 重载==不适用于二进制树
- 正在尝试重载二进制搜索树分配运算符
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 带有数组键C++的二进制映射
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 二进制数之和(使用C样式字符串)
- 如何从dicom文件中读取二进制数据
- 基于编译器选项的编译二进制路径