ifstream lesen, liest nur 1 zeile



  • Hallo ihr,

    ich habe ein sehr sehr seltsames problem. ich habe eine .dat datei mit ca. 27000 zeilen. will die sätze auslesen und in eine datenbank schreiben. hier der code:

    ifstream datei;
    char iBuf[13];
    AnsiString iBuffer;
    
    datei.open("test_neu.dat");
    
    datei.getline(iBuf,sizeof(iBuf));
    iBuffer = iBuf;
    
    while (!datei.eof())
    {
       datei.getline(iBuf,sizeof(iBuf));
       iBuffer = iBuf;
    }
    

    So wollt ich das auslesen mal testen. und nun das komische.
    er liest die erste zeile aus, gibt auch dem AnsiString die zeile, und beim nächsten datei.getline() schreibt er nichts neues in iBuf es stehen immernoch die werte der ersten zeile drin und nach dem zuweisen zu iBuffer, steht in iBuffer NULL als Data drin.

    Was geht hier schief?

    Danke.

    Gruß
    schmalhans 😕 😕 😕



  • iBuf[13] soll iBuf[133] sein. hab mich verschrieben.



  • Hallo

    wenn du AnsiString als Ziel hast, benutzt TFileStream oder besser noch TStringList, um TextDateien einzulesen.

    bis bald
    akari



  • oder string statt char[]

    ifstream datei;
    string iBuf;
    AnsiString iBuffer;
    
    datei.open("test_neu.dat");
    
    getline(datei, iBuf);
    iBuffer = iBuf.c_str();
    
    while (!datei.eof())
    {
       getline(datei, iBuf);
       if( !datei.eof())
         iBuffer = iBuf.c_str();
    // solltest du iBuffer nicht irgendwo speichern?
    // ansonsten statt dessen
       if( !datei.eof())
         iBuffer += iBuf.c_str();
    }
    


  • "Aufruf einer undefinierten Funktion "getline"

    Was muss ich da includen?

    Danke schonmal für die Anregungen.



  • Hallo

    so wie es dort steht, must du nur diese includes haben :

    #include <fstream>
    #include <string>
    
    using namespace std;
    

    bis bald
    akari



  • fstream allein sollte reichen. Die zieht normalerweise string mit rein. Und natürlich vcl.h



  • danke für eure hilfe! es funktioniert nun.

    nur finde ich es schon komisch, dass es anders nicht funktioniert hat.
    nochmals danke!

    gruß
    schmalhans


Anmelden zum Antworten