Fragen zum Einlesen von Dateien



  • Hallo,
    wie kann ich das mit den Zeilenumbrüchen beim Einlesen von einer .txt Datei anders machen ,denn ich habe Dateipfade und das funzt sonst nicht.

    Wenn ich anstatt Leerzeichen Punkte setzte und diese dann nachträglich lösche dann funktioniert es immer noch nicht.
    Brauche Hilfe!!



  • Hallo

    Ich kann aus deinem Text nichts verstehen...
    Schreib deine Frage noh malverständlicher, und poste Minimal-Quellcode mitsamt Beispiel-Datei.

    bis bald
    akari



  • Ich glaub, ich weiß, was er meint. Er hat Dateipfade in einer Textdatei gespeichert. Diese können allerdings Leerzeichen enthalten.

    dontfeedphil: Wenn du in jeder Zeile nur einen Pfad stehen hast, kannst du den Pfad mit

    std::getline(std::ifstream &, std::string &);
    

    einlesen. Ansonsten liest du immer bis zu deinem Separator ein, der die Pfade voneinander trennt.



  • hallo,
    und wie kann ich das jetzt in meinem prog benutzen??



  • ifstream in("meine datei.txt");
    string line;
    
    getline(in, line);
    


  • Hallo,
    mein Problem ist nun ,dass ich ja z.B. die ".txt" Datei so aufgebaut habe:

    Vokabel
    Übersetzung
    2. Vokabel
    2. Übersetzung
    ...

    Wie lese ich das am geschicktesten ein??
    -vielleicht in einen Char Array wenn es möglich ist weil ich damit dann später auch eine Abfrage gestalten möchte.



  • oder doch eher std::map<std::string, std::string>



  • Da (bzw. wenn) eine Vokabel auch mehrere Übersetzungen haben kann, würde ich eher eine multimap nehmen.



  • Sorry,
    aber so komme ich nicht weiter könntet ihr mir mal einen kleinen Code zeigen oder schreiben ??ein kleines Bespiel wie ich das für mein Einlesen und Schreiben benutzen könnte.
    Wäre super denn ich habe mit "Multimaps"?!? noch nie gearbeitet ,
    trotzdem vielen Dank für eure guten und vor allen Dingen schnellen Antworten!!! 👍 🙂
    THX



  • multimap<string,string> dictionary;
    
    ifstream data("dict.txt");
    
    string de,en;
    while(data)
    {
      getline(data,de);//Vokabel einlesen
      getline(data,en);//Übersetzung einlesen
      if(!data) break;
    
      dictionary.insert(make_pair(de,en));//Vokabel+Übersetzung ins Wörterbuch eintragen
    }
    
    for(multimap<string,string>::iterator p=dictionary.begin();p!=dictionary.end();++p)
      cout<<p->first<<"\t"<<p->second<<"\n";
    

Anmelden zum Antworten