Problem mit std::ifstream

Diskutiere Problem mit std::ifstream im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hi, ich lerne gerade C++ und bin mitlerweile beim Filehandling angelangt: Frei nach dem Buch "Practical C++" will ich bescheidene 10 Zahlen...

  1. #1 Senator, 05.07.2007
    Senator

    Senator Mitglied

    Dabei seit:
    21.05.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Hi,

    ich lerne gerade C++ und bin mitlerweile beim Filehandling angelangt:
    Frei nach dem Buch "Practical C++" will ich bescheidene 10 Zahlen aus einer Datei in einen int Array einlesen.

    Ich hab die schwierige Zeile mit einem Teufel markiert. Denn genau da scheint nichts zu passieren. Kein einziger Array Wert wird initialisiert. Alles andere funktioniert.

    Warum funktioniert das nicht? Ich möchte keinen alternativen Code haben, sondern wissen, warum das nicht geht und wo der Fehler liegt.

    #include <iostream>
    #include <fstream>

    int main(){
    const int SIZE = 10;
    int array[SIZE];
    int counter;
    std::ifstream datei("versuch.dat");

    if(datei == 0){
    std::cerr << "Datei konnte nicht geöffnet werden.";
    exit(8 );
    }

    for(counter = 0; counter < SIZE; ++counter){
    datei >> array[counter]; :devil:
    std::cout << counter << ". " << array[counter] << "\n";
    }
    return(0);
    }


    PS.: Mit std::ofstream hab ich übrigens keine Probleme.
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Mµ*e^13.5_?¿, 05.07.2007
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    Der Code ist schon mal nicht falsch. Wie sieht denn die Datei aus, die du versuchst einzulesen?
    Ich habe eine Datei mit zehn Zeilen genommen in der in jeder Zeile eine Zahl steht.
    Das Programm läuft einwandfrei, die Ausgabe ist wie erwartet.
     
  4. #3 Senator, 05.07.2007
    Senator

    Senator Mitglied

    Dabei seit:
    21.05.2006
    Beiträge:
    35
    Zustimmungen:
    0
    Du hast mich auf die richtige Spur gebracht. Vielen Dank. Ich war der Meinung, das die Datei Spaltenweise ausgelesen wird. Aber die wird ja zeilenweise ausgelesen :)

    In meiner Datei standen also die Zahlen von 0-9 in der ersten Zeile. Und das sprengt bekanntlich den Bereich für int Werte :oldman

    Jetzt läuft es wie geplant. Danke
     
  5. rikola

    rikola Foren Gott

    Dabei seit:
    23.08.2005
    Beiträge:
    2.133
    Zustimmungen:
    0
    Solange die Ziffern durch Leerzeichen getrennt sind, duerfte es keinen Unterschied machen. Sie werden nicht Zeilenweise eingelesen- in der Voreinstellung gilt 'white space' als Trennzeichen, und dazu gehoert das Leerzeichen ebenso wie der Zeilenumbruch.

    Ich wuerde uebrigens mit "if(! datei.is_open())" testen, ob die Datei erfolgreich geoeffnet wurde, nicht mit 'if(datei == 0)'.
     
Thema:

Problem mit std::ifstream

Die Seite wird geladen...

Problem mit std::ifstream - Ähnliche Themen

  1. Linux 5.6 löst Jahr-2038-Problem für 32-Bit-Systeme

    Linux 5.6 löst Jahr-2038-Problem für 32-Bit-Systeme: Die kommende Version 5.6 wird der erste Linux-Kernel sein, der gegen das Jahr-2038-Problem auf 32-Bit-Systemen immun ist. Damit das greifen kann,...
  2. kleines curl Problem

    kleines curl Problem: Hallo, ich bin LINUX Frischling und hab mich ein wenig in eien Sackgasse verlaufen... Ich habe vor, die Verzeichnisgröße via curl Befehl in eine...
  3. Samba 4.0.0 - DNS-Problem

    Samba 4.0.0 - DNS-Problem: Hallo, ich betreibe seit 2013 einen Samba4 Server auf Basis der sernet-Pakete als DC für eine kleine Domäne. Nur mit dem DNS gibt es Probleme....
  4. Mageia 7.1 patcht Boot-Problem bei AMD Ryzen 3000 CPUs

    Mageia 7.1 patcht Boot-Problem bei AMD Ryzen 3000 CPUs: Mageia hat kurzfristig mit Version 7.1 ein Point-Release veröffentlicht, um einen Boot-Fehler mit AMDs Ryzen 3000 CPUs zu beheben, der einige...
  5. ip6tables Problem

    ip6tables Problem: Hallo zusammen, ich hab ein Problem kann aber keinen Fehler finden, äußert sich wie folgt, ich habe endlich für ein System in Netz eine IPv6...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden