Ich versuche, eine Bilddatei einzulesen.C++ was passiert mit meiner ifstream.get() Funktion?
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream read("C://Users/Ben/Desktop/1.jpg");
while (1){
cout << read.get();
cin.get();
}
return 0;
}
Wenn ich das tue, erhalte ich eine Reihe von Zahlen im Bereich von 0 bis 255. So in dem Byte-Wert Ich nehme an, es liest richtig, mit Ausnahme der Tatsache, dass ich getroffen -1 (EOF) vorzeitig . Nach ungefähr 30 bis 40 Werten erscheint die -1. Es ist eine 3 MB große Datei. Ich erwarte nicht, dass -1 erst viel später erscheint. Was ist los?
Wahrscheinlich müssen Sie den Binärmodus angeben, wenn Sie die Datei öffnen ('fopen (file," rb ")' in C; ich weiß nicht, wie man das mit Streams macht). – melpomene
'ifstream :: traits_type :: eof()' wird nicht unbedingt zu '-1' ausgewertet, aber selbst wenn es das tut, was ist die Ausgabe, wenn es '0xFF' Bytes in der Datei gibt? – user657267
Sie haben die Datei nicht im Binärmodus geöffnet. Versuchen Sie, dem Konstruktor der Form 'ios_base :: in | ein zweites Argument zu geben ios_base :: binary'. – Peter