string aus Datei lesen



  • Hi
    ich hab da ein Problem udn hoffe das ihr eine Antwort darauf wisst:
    Wenn ich einen string(Klasse string) in eine Datei schreibe z.B.

    string s("Hallo");
    ofstream out("data.dat" ,ios::out|ios::trunc|ios::binary);
    out<<s;
    string s1("GutenMorgen");
    out<<s;
    

    werden die strings direkt hintereinander in die Datei geschreiben (HalloGutenMorgen).
    Wenn ich die Datei jetzt aber auslesen will, wird doch der gesamte Inhalt ausgelesen und in einen string kopiert.
    Wie kann ich also Datei wieder in zwei verschiedene strings lesen???
    Danke für eure Hilfe
    Sebastian



  • Hallo

    indem du beim Schreiben zwischen die beiden Strings ein fest definiertes Trennzeichen einfügst, durch das du beim Einlesen die beiden Strings wieder trennen kannst.
    Gebräuchlich ist dabei der Zeilenumbruch, "\r\n". Dann kannst du mit getline() ganz einfach jede einzelne Zeile einlesen.

    bis bald
    akari



  • gibt es nicht irgendeine c++methode die so etwas komfortabel zur verfügung stellt?



  • mxpower schrieb:

    gibt es nicht irgendeine c++methode die so etwas komfortabel zur verfügung stellt?

    Ja du 😃

    string s("Hallo");
    ofstream out("data.dat" ,ios::out|ios::trunc|ios::binary);
    out<<s<<" ";
    string s1("GutenMorgen");
    out<<s;
    

    oder auser dem Trennzeichen wir akari schon sagt ein Zeilenumbruch oder sonstwas...



  • Aber wie kann ich das dann wieder aus der Datei komfortabel einlesen? (d.h. mit c++ Methoden und nicht mit ANSI-C)ich habe noch keine Methode gefunden die das bewerkstelligt.



  • Lies die ganze Zeile ein und dann trennst du mit string::find und string::substr die drei Strings wieder.



  • Ja, sich ein Trennzeichen ausdenken (z.B. Semikolons oder so) und dann in einem Rutsch einlesen und dann einen Tokenizer drüber laufen lassen:

    http://www.boost.org/libs/tokenizer/index.html



  • ich dank euch jetzt hab ich es endlich hinbekommen
    Vielen Dank


Anmelden zum Antworten