如何通过给定的 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 中的示例。