Einlesen Von Dateien
-
Moin!
Ich versuche mit diesem Code:
ifstream dat_ein; string dateiname; cout << "Geben Sie den Namen der Datei ein: "; cin >> dateiname; cout << endl; dat_ein.open(dateiname.c_str(), ios_base::in | ios_base::binary); if(!dat_ein) { cout << "Datei konnte nicht geoeffnet werden!"; cout << endl; return -1; } char zeichen; while (!dat_ein.eof()) { dat_ein.get(zeichen); printf("%i", zeichen); printf("\n"); }z.B. eine *.exe (Anwendung) einzulesen.
Es wird einige negative Zahlen ausgegeben.
Liegt dies an der "Intepreation" / Umwandlung von den "unbekannten" Zeichen?
Grüße
-
Erstens: Du musst einen Pfad relativ zum Ausführungsverzeichnis deines Programms angeben. Hast du hoffentlich berücksichtigt.
Bei Stream-Operationen nimmt man als Abbruchbedingung idiomatisch die Operation selbst:
char zeichen; while( dat_ein.get(zeichen) ) std::cout << zeichen;Außerdem initialisiert man
ifstreamdirekt mit dem Dateinamen und nutzt nichtopen.openhabe ich noch nie gebraucht. Vielleicht sollten die das entfernen, damit alle mal den Konstruktor benutzen.Falls du übrigens die Datei nur ausgeben willst, kann man die Schleife verstecken.
string file; getline( cin, file ); ifstream dat_ein{file}; if( dat_ein ) copy( istreambuf_iterator<char>{dat_ein}, istreambuf_iterator<char>{}, ostreambuf_iterator<char>{cout} );(Ungetestet)
~Edit: Code korrigiert~