简单的 C++ 二进制文件读取

simple c++ binary file reading

本文关键字:读取 二进制文件 C++ 简单      更新时间:2023-10-16

>我有一个由一些 fortran 代码创建的二进制文件。我想编写一个 c++ 代码来读取这个二进制文件,然后通过 std::cout 将其吐出。到目前为止,这是我的代码:

    #include<fstream>
    #include<iostream>
using namespace std;
int main(){
  ifstream file("tofu.txt", ios::binary | ios::in | ios::ate);
  ifstream::pos_type size;
  if(file.is_open()){
    size = file.tellg();
    cout << "size = " << size << 'n';
    file.seekg(0);
    char bar[500];
    file.read((char*) (&bar), size);
    file.close();
    string foo(bar);
    cout << "foo = " << foo << 'n';
  }
  else cout << "Unable to open file";
  return 0;
}

但是,在编译和运行时,代码没有给我任何东西:

size = 250
foo =

有人可以告诉我我在代码中哪里做错了?谢谢!

您忘记终止 char 数组,导致未定义的行为。像这样修复它:

char bar[500];
assert(size < 500);
file.read((char*) (&bar), size - 1);
bar[size] = '';

(确保检查size是否也不超过您的空间!