如何打印二进制文件
How to print binary file
我想创建一个二进制文件,其中包含从 0 到 10 的整数。之后,我想将它们中的每一个都翻倍并打印出来。当我运行它时,没有打印任何内容。
using namespace std;
int main()
{
fstream binfile("Numbers.dat", ios::in | ios::out | ios::binary);
for(int i=0; i<=10; i++)
binfile.write((char*)&i, sizeof(i));
binfile.flush();
int number;
while(binfile.read((char*)&number, sizeof(number)))
{
number*=2;
binfile.seekp(binfile.tellg()-sizeof(number));
binfile.write((char*)&number, sizeof(number));
binfile.flush();
}
binfile.seekg(0);
while(binfile.read((char*)&number, sizeof(number)))
cout<<number;
return 0;
}
您的while
条件永远不会得到满足。您的第一次(也是唯一一次(读取尝试返回0
- 这就是不打印任何内容的原因。
在第一次循环之后,你必须寻找指向第 0 个位置的 "get" 指针,以覆盖后续 "while" 循环中的数字 第二个循环
终止,因为 binfile 的 eofbit 被设置,以下所有输入输出操作都将失效,因此我们必须清除 eofbit 以重新启动操作
工作代码:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
fstream binfile("Numbers.dat", ios::in | ios::out | ios::binary);
for(int i=0; i<=10; i++) // 1st loop
binfile.write((char*)&i, sizeof(i));
binfile.flush();
binfile.seekg(0);
int number;
while(binfile.read((char*)&number, sizeof(number))) // 2nd loop
{
number*=2;
binfile.seekp(binfile.tellg()-sizeof(number));
binfile.write((char*)&number, sizeof(number));
binfile.flush();
}
binfile.clear();
binfile.seekg(0);
while(binfile.read((char*)&number, sizeof(number))) // 3rd loop
cout<<number << " ";
return 0;
}
相关文章:
- 正在读取二进制文件(is_open)
- 在C++中将类(带有Vector成员)保存为二进制文件
- 如何从二进制文件中读取字符串
- 保存/加载大量短数组到二进制文件
- 从二进制文件中读取整数数组
- Android 在编译二进制文件时重建静态库
- 在 C++ 中将双精度变量写入二进制文件
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- C++:实际上不是从二进制文件中读取
- 如何从二进制文件中的给定符号中获取调用程序图
- C++ 尝试优化每一帧将数据打印到二进制文件
- 如何打印二进制文件
- 如何使用Qt为每个地址打印二进制文件
- 二进制文件以及如何对其采取行动(打印文件)
- 如何读取二进制文件并在屏幕上打印 3?
- 我正在尝试读取一个包含字符串和整数的二进制文件..并打印出与字符串对应的整数
- 以二进制模式打印到STL(立体光刻)文件
- 使用二进制文件读取和打印二进制数据C++
- 编译时从发布二进制文件中删除调试打印
- 如何将日期保存在二进制文件中,然后读取文件并打印