[c++] File Stream problem



  • moin, ich habe wieder ne frage :

    ich öffne ne datei und schreibe den gelichen inhalt + neuen dazu:

    win_file wurde oben definiert asl string (string win_file;)
    .....
    
        ifstream ein("test.txt");
        while (!ein.eof())
        {
            char eingang;
            eingang = ein.get();
            win_file = win_file + eingang;
        }
        ein.close();
    
        ofstream aus("test.txt");
        aus<<win_file<<endl;
        aus<<"HAllo neuer inhalt"<<endl;
        aus.close();
    
    .....
    

    die test.txt sah vor dem ausführen so aus:

    hallo alter inahlt
    

    danach so :

    hallo alter inhalt
    ÿ
    HAllo neuer inhalt
    

    woher kommt das ÿ?
    soweit ich weis steht das ÿ für binary = 0, aber wie kriege ich es weg, der liest das von irgend wo ein!

    pls help

    mfg psihxxx



  • 1. benutze cpp-tags um syntaks-heileiting zu bekommen
    2. das y-ü kommt daher, dass das ende der datei erreicht wurde,
    du aber trotzdem das zeichen schreibst.

    ifstream ein("test.txt");
        while (!ein.eof())
        {
            char eingang;
            eingang = ein.get();
               // <= du musst hier prüfen, ob eof()
            win_file = win_file + eingang;
               // <= nicht hier 
        }
        ein.close();
    
        ofstream aus("test.txt");
        aus<<win_file<<endl;
        aus<<"HAllo neuer inhalt"<<endl;
        aus.close();
    
    .....
    


  • while (true)
        {
            char eingang;
            eingang = ein.get();
            if(ein.eof())
            {
                break;
            }
            win_file = win_file + eingang;
        }
    


  • jo danke! wieso bin ich nicht drauf gekommen?



  • Einfacher wäre:

    {
      ifstream ein("test.txt");
      copy(istream_iterator<char>(ein),
           istream_iteartor<char>(),
           back_inserter(win_file));
    }
    

    Da kann Dir sowas nicht mehr passieren.

    Die geschweiften Klammern sind übrigens absicht. Das definiert einen Gültigkeitsbereich, so daß die Datei an der schliessenden Klammer automatisch geschlossen wird.

    Tommi


Anmelden zum Antworten