ifstream, kapier ich net?!?!



  • Hi,

    also das kapiert ja KEIN mensch! Wieso funzt dieser code net:

    int main () 
    {
        char buffer[256];
        ifstream examplefile ("test.txt", ios::binary);
    
        if (!examplefile.is_open())
        { 
            cout << "Error opening file"; 
            exit (1); 
        }
    
        while (!examplefile.eof())
        {
            examplefile.getline (buffer,100);
            cout << buffer << endl;
        }
    
        // Damit programm nicht direkt beendet.
        int i;
        cin >> i;
    
        return 0;
    }
    

    die TXT sieht so aus:

    This is a line.
    This is another line.

    und das ist die ausgabe in der Console:

    T

    Was zum geier ist da falsch??? 😡 😕 😡



  • Vielleicht ist die Textdatei Unicode. Schau sie dir doch mal in einem Hexeditor an.



  • Kann net sein, die hab ich als ASCII abgespeichert



  • lass mal das ios::binary weg, vieleicht gehts dann



  • Danke funzt nun 🙂

    mal ne andere frage: ich lasse die while ja so durchlaufen:

    while (!examplefile.eof())
    

    gibbet ne möglichkeit die schleife so lange durchlaufen zu lassen bis ein bestimmter string auftaucht? z.B. FILE_BLOCK_END ?



  • string zeile;
    while (!datei.e_of())
    {
        getline (datei, zeile);
        if (zeile == "EOF")    break;
    }
    

    das getline ist aus <iostream>, ob du erst die datei, und dann den string oder umgekehrt angeben musst, fällt mir nie ein 😃
    statt "EOF" kannst natürlich jede andere buchstabenkombination machen. das brak bewirkt, dass die schleife vorzeitig verlassen wird


Anmelden zum Antworten