如何通过给定的 bin 文件打开和读取 C++ 中的二进制文件?
how to open and read a binary file in C++ by a given bin file?
有没有人可以帮我看看哪里做错了?或者解释为什么?我是初学者,我尽力打开二进制文件。但是刚好用完"file is open"“0”。什么都没有出来。
objective:
Count3s 程序打开一个包含 32 位整数 (ints) 的二进制文件。您的程序将计算值 3 在这个数字文件中出现的次数。您的 objective 是学习打开和访问文件并应用您的控制结构知识。包含程序使用的数据的文件的名称是 "threesData.bin".
我的代码如下,知道的请帮帮我。提前致谢!
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int count=0 ;
ifstream myfile;
myfile.open( "threesData.bin", ios::in | ios :: binary | ios::ate);
if (myfile)
{
cout << "file is open " << endl;
cout << count << endl; }
else
cout << "cannot open it" << endl;
return 0;
}
首先你应该读取以二进制模式打开的文件
myfile.read (buffer,length);
其中 buffer
应定义为
int data;
并用作
myfile.read (&data,sizeof(int));
第二个要点是从文件中读取多个数字——您需要由检查流的条件控制的循环。例如:
while (myfile.good() && !myfile.eof())
{
// read data
// then check and count value
}
最后一件事,您应该在阅读完后关闭已成功打开的文件:
myfile.open( "threesData.bin", ios::binary);
if (myfile)
{
while (myfile.good() && !myfile.eof())
{
// read data
// then check and count value
}
myfile.close();
// output results
}
还有一些额外的提示:
1) int
并不总是 32 位类型,因此请考虑使用 <cstdint>
中的 int32_t
;如果你的数据超过 1 个字节,可能字节顺序很重要,但任务描述中没有提到
2) read
允许每次调用读取多个数据对象,但在这种情况下,您应该读取数组而不是一个变量
3) 阅读并尝试 references and other available resources like 中的示例。
有没有人可以帮我看看哪里做错了?或者解释为什么?我是初学者,我尽力打开二进制文件。但是刚好用完"file is open"“0”。什么都没有出来。
objective: Count3s 程序打开一个包含 32 位整数 (ints) 的二进制文件。您的程序将计算值 3 在这个数字文件中出现的次数。您的 objective 是学习打开和访问文件并应用您的控制结构知识。包含程序使用的数据的文件的名称是 "threesData.bin".
我的代码如下,知道的请帮帮我。提前致谢!
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int count=0 ;
ifstream myfile;
myfile.open( "threesData.bin", ios::in | ios :: binary | ios::ate);
if (myfile)
{
cout << "file is open " << endl;
cout << count << endl; }
else
cout << "cannot open it" << endl;
return 0;
}
首先你应该读取以二进制模式打开的文件
myfile.read (buffer,length);
其中 buffer
应定义为
int data;
并用作
myfile.read (&data,sizeof(int));
第二个要点是从文件中读取多个数字——您需要由检查流的条件控制的循环。例如:
while (myfile.good() && !myfile.eof())
{
// read data
// then check and count value
}
最后一件事,您应该在阅读完后关闭已成功打开的文件:
myfile.open( "threesData.bin", ios::binary);
if (myfile)
{
while (myfile.good() && !myfile.eof())
{
// read data
// then check and count value
}
myfile.close();
// output results
}
还有一些额外的提示:
1) int
并不总是 32 位类型,因此请考虑使用 <cstdint>
中的 int32_t
;如果你的数据超过 1 个字节,可能字节顺序很重要,但任务描述中没有提到
2) read
允许每次调用读取多个数据对象,但在这种情况下,您应该读取数组而不是一个变量
3) 阅读并尝试 references and other available resources like