-2
私はいくつかのFortranコードで作成されたバイナリファイルを持っています。私は、このバイナリファイルを読み込み、std :: coutを通して吐き出すためのC++コードを書いてみたいと思います。ここに私のコードは、これまでのところです:コンパイルと実行したときに単純なC++バイナリファイルの読み込み
#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 =
私はコードで間違ってやっているところ誰かが私に教えてもらえますか?ありがとう!
bar' 'の内容がないので、あなたのコードは未定義の動作をしている(あなたは
size
があまりにも、あなたがのためのスペースを持っているよりも大きくないことを確認してください!)ヌルで終了する文字列を形成します。 –ファイルには何が含まれていますか?たとえば、最初のバイトがゼロの場合、正常に動作します。 –
@KerrekSB:良いキャッチ。 'char bar [500] = {0};' –