Read binary-Datei c++

Ich versuche zu Lesen, ein Bild in ein char-array. Hier ist mein Versuch:

ifstream file ("htdocs/image.png", ios::in | ios::binary | ios::ate);
ifstream::pos_type fileSize;
char* fileContents;
if(file.is_open())
{
    fileSize = file.tellg();
    fileContents = new char[fileSize];
    file.seekg(0, ios::beg);
    if(!file.read(fileContents, fileSize))
    {
        cout << "fail to read" << endl;
    }
    file.close();

    cout << "size: " << fileSize << endl;
    cout << "sizeof: " << sizeof(fileContents) << endl;
    cout << "length: " << strlen(fileContents) << endl;
    cout << "random: " << fileContents[55] << endl;
    cout << fileContents << endl;
}

- Und das ist die Ausgabe:

size: 1944
sizeof: 8
length: 8
random: ?
?PNG

Kann jemand erklären mir das an? Ist es eine end-of-file char an position 8? Dieses Beispiel wurde entnommen aus cplusplus.com

Mac OS X und kompiliert mit XCode.

  • mögliche Duplikate von C++ - Lesen und schreiben von Binär-Datei
  • Nein, es ist nicht eine doppelte, das problem der OP ist, die Verkleidung ist anders, nicht wirklich ein problem im source-code(abgesehen von undichten Speicher), aber in Verständnis es.
  • Sie wollte nicht geben Sie an, welche Ausgabe du erwartet statt.
  • Ich erwartete eine von sizeof oder length zu werden, 1944, aber wenn man die Kommentare unten sehe ich nun, dass es nicht eine Ausgabe, die ich bekommen kann
InformationsquelleAutor Emil | 2011-05-28
Schreibe einen Kommentar