Matrix aus einer Datei auslesen



  • Hallo,

    ich stehe gerade irgendwie aufm Schlauch:

    ich soll eine Matrix programmieren. Durch eine Eingabe durch den Benutzer soll eine Datei (.csv) ausgewählt werden, aus der die Daten für die Matrix ausgelesen werden sollen.

    für das Auslesen habe ich schon folgendes:

    string dateiname;

    cout<<"Welche Datei soll geöffnet werden?";
    cin>>dateiname;

    ifstream auslesen;

    auslesen.open(dateiname.c_strl),ios::in);

    char zeichen;

    while(!auslesen.eof())
    {auslesen.get(zeichen)
    cout<<zeichen;}

    auslesen.close();

    nun weiß ich nicht wie ich es in eine Matrix einbinden soll. 😞


  • Mod

    Das ist nichts und zudem noch voller Fehler. Du liest erstens mal das falsche und zweitens noch auf die falsche Art und Weise. Da sind ja sogar Tippfehler drin!
    Siehe mal:
    http://www.c-plusplus.net/forum/200753
    http://www.c-plusplus.net/forum/304133



  • Dankeschön für diese Information!

    Da ich ein blutiger Anfänger bin, hab ich mich an ein Internet-Tutorial gehalten, bei dem es erklärt worden ist.
    Dass heißt für mich wohl mich weiter in das Thema einlesen, wenn selbst das schon falsch ist 😃


  • Mod

    doveo schrieb:

    Dass heißt für mich wohl mich weiter in das Thema einlesen, wenn selbst das schon falsch ist 😃

    Aber bloß nicht aus diesem Tutorial, das du benutzt hast! Tutorials sind oft selber von Anfängern geschrieben, nachdem sie ein bisschen was gelernt, aber nicht verstanden haben. Dieses scheint sogar eines von der Sorte zu sein, bei dem der Schreiber Dinge sogar falsch verstanden hat und nun falsch weiter gibt.

    Hier im Forum findest du als wichtig markierte Threads, die dir weiterhelfen.



  • Ist schon enttäuschend, dass wenn man was lernen will und Zeit investiert um Tutorials sich anzuschauen, dass diese dann noch nicht mal fachlich richtig sind...deswegen bin ich froh, dass ich das schon mal weiß!

    Kannst du mir vielleicht bitte einen Tipp geben, was (welchen Operator oder wie man es nennt) ich dafür brauchen werde?


  • Mod

    An deinem Quelltext sind, neben den Rechtschreibfehlern, die beiden logischen Fehler:

    -get liest dir Zeichen. Ich vermute, da sind eher Zahlen in der Datei, oder? Der operator>> kann Zahlen aus Streams lesen

    -Die Leselogik stimmt nicht. Erst prüfst du eof, dann liest du, dann gibst du das gelesene aus. Aber eof wird erreicht, wenn eine Operation über das Dateiende hinaus geht. Das heißt, du bekommst einen Lesefehler, dann gibst du trotzdem das falsch gelesene aus, weil du erst danach wieder prüfst.
    Außerdem: Warum nur eof, warum nicht alle Fehler? Daher sieht in allen C-artigen Sprachen eine Leseschleife so oder vergleichbar aus:

    while (leseaktion erfolgreich)
      verarbeite ergebnis;
    

    Schönerweise geben (fast) alle Leseaktionen in C++ sehr komfortabel zurück, ob sie erfolgreich waren oder nicht:

    int zahl;
    ifstream datei("blah");
    while (datei >> zahl)
      cout << zahl << '\n';
    


  • ich glaube, dass das mit eof hätte prüfen sollen, ob eine Zahl in der Datei an der Stelle steht, wenn nicht, sollte eine 0 eingesetzt werden.

    Vielen Dank, ich werde es ausprobieren!


Anmelden zum Antworten