Datei zurücksetzen
-
Hallo,
ich wollte mal fragen wie es möglich ist eine gelesene Datei wieder zurückzusetzen damit ich sie gleich danach nochmal lesen kann. mit einem einfachen close und dann wieder öffnen gehts komischer weiße nicht... kann mir da einer helfen
-
Du kannst mit seekg(0) wieder an den Dateianfang zurückfahren - aber bevor du wieder lesen kannst, mußt du zumindest das eofbit zurücksetzen (per clear()):
void rewind_file(ifstream& file) { file.clear(); file.seekg(0); }
-
alles klar, danke genau das war was ich gesucht habe
-
Du musst den Inhalt schon flushen (std::flush) ... sonnst kommst du nicht weit

-
(D)Evil schrieb:
Du musst den Inhalt schon flushen (std::flush) ... sonnst kommst du nicht weit

Was hat das denn mit gelesenen (Eingabe-)Dateien zu tun? flush() schreibt den Dateipuffer einer Ausgabedatei aus dem Programm raus.
-
Oh sorry hatte gedacht er schreibt erst und will das dann wieder lesen ... verdammt

-
nee...aber ma noch ne andere frage wie kann ich es bei einem string vergleich hinbekommen das groß oder kleinschreibung nicht beachtet wird, also zum beispiel wenn ich Steffen und steffen vergleiche, sind ja beides dieselben wörter nur halt anderes geschrieben, muss ich da vorher alles in klein oder großbuchstaben umtransformieren?
-
manuell (zeichen für zeichen beide Strings durchlaufen und toupper'n), semi-manuell (du baust dir eine Vergleichsfunktion, die zwei Zeichen case-insensitiv vergleicht -
return toupper(l)<toupper(r);und übergibst sie an std::lexicographical_compare()) oder automatisch (du schreibst dir eine char_traits-Variante, die Großschreibung ignoriert (siehe mein Magazin-Artikel über Stringverarbeitung).
-
bool is_equal(std::string const& str_a, std::string const& str_b) { std::string tmp_copy_a(str_a); std::transform(tmp_copy_a.begin(), tmp_copy_a.end(), tmp_copy_a.begin(), std::tolower); std::string tmp_copy_b(str_b); std::transform(tmp_copy_b.begin(), tmp_copy_b.end(), tmp_copy_b.begin(), std::tolower); return tmp_copy_a == tmp_copy_b; }