Problem beim Texteinlesen in einen string - wie schaut EOF aus?



  • hab ein Problem beim Texteinlesen?

    string array;
    
        ifstream f;
        f.open("..//Text.txt");
    
        if(!f) {
    
            cout<<"Konnte Datei nicht oeffnen!"<<endl;
    
        }
        char ch;
            while(f.get(ch)){
                array[i] = ch;
                ++i;
            }
    
            f.close();
    

    funzt einfach nicht beim kompilieren kommt kein Fehler, Datei wird erkannt es kommt keine Meldung dass Datei nicht erkannt wurde?

    Noch ne Frage wenn ich zb aus einer Datei eine Zeichenkette lesen will mit z.B dddd\0llll\0dd funzt das ? oder ist \0 EOF? ist EOF ein anderes Zeichen?

    thx



  • Hast du i vorher initialisiert?

    [edit]
    Arghh...array ein string. So geht das nicht. Mit strings kannst du z. B. das machen:

    array+=ch;
    

    Wobei ich mir noch nen andneren Namen überlegen würde, denn string != array.



  • Noch ne Frage wenn ich zb aus einer Datei eine Zeichenkette lesen will mit z.B dddd\0llll\0dd funzt das ? oder ist \0 EOF? ist EOF ein anderes Zeichen?

    EOF ist als (-1) definiert, also passt nicht in ein char und deshalb wird auch kein Byte gleich EOF sein. Ausser: wenn du es explicit oder implicit castes. istream::get() gibt nicht umsonst int zurück!



  • Wieso passt -1 nicht in ein Char ?



  • probiers mit

    while(!f.eof())
    {
    
    //dein code
    
    }
    

    bei der open-methode kannst du auch ios flags übergeben, die die Flussrichtung des Streamsangeben



  • probiers mit

    while(!f.eof())
    {
    
    //dein code
    
    }
    

    bei der open-methode kannst du auch ios flags übergeben, die die Flussrichtung des Streamsangeben


Anmelden zum Antworten