Ich habe eine Binärdatei von einigen Fortran-Code erstellt. Ich möchte einen C++ Code schreiben, um diese Binärdatei zu lesen und sie dann über std :: cout auszuspucken. Hier ist so weit mein Code:einfache C + + Binärdatei lesen
#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;
}
Wenn jedoch kompiliert und ausgeführt, der Code gibt mir nichts:
size = 250
foo =
Könnte mir jemand sagen, wo ich in den Code falsch machen werde? Vielen Dank!
Ihr Code Verhalten, weil der Inhalt von 'bar' undefined hat nicht Bilden Sie eine nullterminierte Zeichenfolge. –
Was enthält die Datei? Wenn das erste Byte beispielsweise Null ist, funktioniert es gut. –
@KerrekSB: guter Fang. 'char bar [500];' sollte ersetzt werden durch 'char bar [500] = {0};' –