Archivierung und Abruf BITTE um Hilfe



  • Du bist ja hier bei C++.
    Wenn dein Quelltext x-mal so groß ist, hast du schon mal an Container gedacht 😉

    Vermute nicht, da du so auf goto stehst.

    Du beschreibst dein Programm so als wolltest du ein Lexikon erstellen.

    Der Quelltext sieht eher nach einem Sammelautomaten für eine Kundendatei aus.
    Schon einen Plan, wenn sich mehrere Karl Mayer oder Sepp Müller melden 😃 😕



  • Wie sähe das mit nem Container denn aus?
    std::find, std::search?
    Aber wie krieg ich die Verknüpfung der Worte hin, also der Nomen/Name PLUS Definition, und dass beides gesucht wird? Und er ausgibt? Also wenn ich ein Nomen/Namen eingebe, er mir die Definition ausgibt?



  • Es gibt den einfach assoziativen Container std::map . Du musst jeweils für den Schlüssel und den Wert einen Typ angeben, bei dir sollte das in beiden Fällen ein std::string sein, also std::map<std::string, std::string> . Benutzbar ist das dann so:

    #include <map>
    #include <string>
    #include <iostream>
    
    int main()
    {
       std::map<std::string, std::string> MyDict;
    
       MyDict["Name"] = "Definition von Name";
    
       // oder
       MyDict.insert( std::make_pair( "Nomen", "Definition von Nomen" ) );
    
       // hässlich, hab aber kein C++11
       std::map<std::string, std::string>::const_iterator i = MyDict.find( "Name" );
       if( i != MyDict.end() )
       {
          std::cout << "Definition von " << i->first << ": " << i->second << std::endl;
       }
       else
       {
          std::cout << i->first << " ist nicht definiert." << std::endl;
       }
    }
    

    Das Suchen funktioniert natürlich nur nach Schlüsseln, wenn du nach weiteren Kriterien suchen willst musst du dir wohl was eigenes basteln (siehe boost::multi_index_container).

    Wenn du andere Zuordnungen brauchst (Name -> irgendwas) musst du natürlich den Wertetyp entsprechend ändern.



  • Sieht sehr gut aus, danke. Nur schaffe ich es irgendwie nicht die Daten abzuspeichern. Was muss ich daran ändern um abzuspeichern?



  • Vielleicht solltest du erst ein Mal das hier lesen...


  • Mod

    DocShoe schrieb:

    Vielleicht solltest du erst ein Mal das hier lesen...

    Das wurde ihm bereits 8x verlinkt. Aber irgendwie schafft er es trotzdem noch, irgendwie Leute zu finden, die ihm helfen.



  • Ich hab nun ne eigene Möglichkeit, Wörter abzurufen:
    Meine Frage dazu wäre:

    #include <iostream>
    #include <fstream>
    #include <sstream>
    using namespace std;
    int
    main()
    {
        ifstream fin("example.txt");
        string line;
        while (getline(fin, line)) {
            istringstream tokenizer(line);
            string token;
           getline(tokenizer, token, ',');
            cout << token << endl;
           getline(tokenizer, token, ',');
            istringstream int_iss(token);
            cout << token << endl;
        }
    

    Wenn ich das Programm ausführe zeigt er mir den kompletten Inhalt an. Ich möchte es aber nur auf eine Zeile beschränken, dass er mir nicht den kompletten Inhalt anzeigt, sondern nur die eine Zeile, nach der ich suchte.
    Wie kriege ich das genau hin?
    Danke im Vorraus



  • boah, gtfo pls



  • Was heißt

    gtfo pls
    

    ????

    Ich habe nur diese einzige Frage:

    Ich hab nun ne eigene Möglichkeit, Wörter abzurufen:
    Meine Frage dazu wäre:

    #include <iostream> 
    #include <fstream> 
    #include <sstream> 
    using namespace std; 
    int 
    main() 
    { 
        ifstream fin("example.txt"); 
        string line; 
        while (getline(fin, line)) { 
            istringstream tokenizer(line); 
            string token; 
           getline(tokenizer, token, ','); 
            cout << token << endl; 
           getline(tokenizer, token, ','); 
            istringstream int_iss(token); 
            cout << token << endl; 
        }
    

    Wenn ich das Programm ausführe zeigt er mir den kompletten Inhalt an. Ich möchte es aber nur auf eine Zeile beschränken, dass er mir nicht den kompletten Inhalt anzeigt, sondern nur die eine Zeile, nach der ich suchte.
    Wie kriege ich das genau hin?
    Danke im v******



  • get the fu.ck out, soweit helfe ich dir noch...

    edit:
    please


Anmelden zum Antworten