frage zu dateioperationen
-
wenn ich eine datei so einlese
std::string y;
while(!x.eof()){
y += x.get();
}und dann in einer anderen datei ausgebe, steht am ende dieser datei oft ein zeichen?! ich glaube es war ein y
wie kann ich diesen fehler/diese tatsache beheben?
-
eof() liefert erst dann false, wenn tatsächlich versucht wurde, über das ende der datei hinauszulesen. in deinem letzten schleifendurchlauf wird also nicht etwa das letzte zeichen der datei an den string angehängt, sondern ein fehlerwert, den get() zurückliefert. prüf also nicht nur auf eof(), sondern auch, ob get() fehlerfrei lesen konnte.
-
könntest du noch sagen auf was ich abfragen muss?
danke
-
std::string y; while(!x.eof()){ char c = x.get(); if(!x.fail()) y += c; }oder so ähnlich
-
oder so:
char c; while(x.get(c))//diese Version von get() liefert den Stream(status) zurück y.push_back(c);
-
die version könnte aber abbrechen, bevor die datei komplett eingelesen wurde.
naja, dafür könnt meine version in ner endlosschleife festhängen bleiben

-
Also bevor get() das failbit setzt, muß schon einiges passiert sein

(und im Ernstfall ist mir ein vorzeitiger Abbruch lieber als eine Endlosschleife)