String als Index-Wert



  • Hi,

    ich habe mal vor einiger Zeit was gelesen, kann mich aber nichtmehr entsinnen, wie das genau war:

    Ich suche eine Container-Klasse, der ich z.B. einen String übergebe und dieser wird als Index verwendet und ich bekomme den diesem String zugeordneten anderen Wert zurück, vgl. Wörterbuch.

    Bsp:

    string englisch;
    string deutsch="Haus";
    englisch=German2English(deutsch);
    

    So war das meine ich zu benutzen.

    Gruss, Martin



  • Hallo,
    Da wird wohl eine std::map das richtige sein. Schau dir diese am besten mal genauer an.

    Beispiel:

    #include <iostream>
    #include <map>
    using namespace std;
    
    int main()
    {
        string s("");
        map<string, string> m;
        while(1)
        {
            cout << "please enter a unique key (q = quit): ";
            cin >> s;
            if(s == "q")
                break;
            if(m.count(s) < 1)
            {
                cout << "\nthe key " << s << " doesn't exist yet, please enter a corresponding value: ";
                string val;
                cin >> val;
    
                m[s] = val;
    
                cout << "key/value pair added\n";
            }
            else
                cout << "the corresponding value of " << s << " = " << m[s] << endl;
        }
        return 0;
    }
    

    Gruß Caipi



  • Vielen Dank für den Tipp! Das war goldrichtig.
    Ich habe sowas direkt in mein aktuelles Projekt eingebaut.

    Wie kann ich nun alle Einträge ausgeben? Ich habe in cppreference.com nachgelesen, das hat mir aber kaum weitergeholfen. Wie kann ich über alle Einträge iterieren und beide Strings ausgeben?

    std::map<std::string,std::string>::const_iterator it;
    for(it=myMap.begin(); it!=myMap.end(); it++)
    {
    	os << it->???;
    }
    

    Oder ganz anders? Hmm...

    Gruss, Karl



  • first und second

    MfG SideWinder



  • Vielen Dank

    Karl


Anmelden zum Antworten