Probleme beim Einlesen einer Text-Datei



  • while (getline(file, line))

    nein !

    so:

    while (!file.eof())          // liesst die gesamte datei ein
    {
        if(file.eof()){break;};  // verhindert die letzte doppelte zeile
        iStr << string1 << string2 << string3 << endl;
    };
    

    //edit schreibfehler (das übliche halt 😉 )



  • enno-tyrant schrieb:

    while (getline(file, line))

    nein !

    Warum nicht?

    Caipi



  • Caipi schrieb:

    enno-tyrant schrieb:

    while (getline(file, line))

    nein !

    Warum nicht?

    Caipi

    weil es nur eine zeile einliest



  • enno-tyrant schrieb:

    Caipi schrieb:

    enno-tyrant schrieb:

    while (getline(file, line))

    nein !

    Warum nicht?

    Caipi

    weil es nur eine zeile einliest

    Nö. Vergl.

    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
    
    int main()
    {
            ifstream in("test.txt");
            if(in.is_open())
            {
                    string str;
                    while(getline(in, str))
                            cout << str << endl;
            }
            return 0;
    }
    

    (Zumindest bei mir, liest es die ganze Datei ein) 😉

    Caipi



  • gut...gebe mich geschlagen 😃



  • Hallo,
    die Version von Blue Tiger funktioniert 1a.

    Aber die hier scheint nicht zu gehen, warum ?

    string t,s,v,n;
    int p;
    istringstream iss(t);
    ifstream fin("Test.txt");
    
    while(!fin.eof())
    { 
       if(!file.eof()) break;
       getline(fin,t);
       iss>>n>>v>>p>>s;
       cout>>n>>v>>p>>s;
    }
    /*
    Test.txt
    Name Vorname Zahl  Ort
    Name Vorname Zahl  Ort
    .
    .
    . 
    */
    

    Müsste doch theoretisch funktionieren oder ?

    Danke.



  • lightning schrieb:

    if(!file.eof()) break;

    wohl eher:

    if(file.eof()) break;
    


  • Das stimmt allerdings, aber damit ist der Fehler nicht beseitigt.

    Ich bekomme diese Ausgabe:

    -858993460

    Und zwar für jede Zeile in der Textdatei !

    Was könnte noch falsch sein ?

    Danke im Voraus.



  • Ein paar Fragen
    Was ist file (meinst du fin?). Das ist aber an der Stelle sinnlos.
    Wo füllst du iss mit t ? Da oben ist das zu zeitig, immerhin ist t noch nicht belegt.
    Was soll das mit dem cout (einlesen ?)
    Also warum nicht:

    string t,s,v,n; 
    int p; 
    stringstream iss; 
    ifstream fin("Test.txt"); 
    
    while(getline(fin,t)) 
    { 
       iss.str(t);
       iss >> n >> v >> p >> s; 
       cout << n << v << p << s; 
    }
    


  • Hallo,

    ja die Fehler "cout>>" und "file" habe ich nur hier gemacht, nicht im Quellcode.
    Ich habe den Fehler auch gefunden.
    Ich dachte wenn in t der string steht, dann wird er dem iss dynamisch zugewiesen.
    Ich habe die Erstellung von iss in der schleife nach der getline Anweisung gemacht.

    Jetzt geht alles !

    Trotzdem Danke.


Anmelden zum Antworten