我有一些由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 =
有人能告诉我代码中哪里出错吗?谢谢!
答案 0 :(得分:0)
您忘记终止您的char数组,导致未定义的行为。修复如下:
char bar[500];
assert(size < 500);
file.read((char*) (&bar), size - 1);
bar[size] = '\0';
(请务必检查size
是否大于您的空间!)