Menge von Strings definieren



  • Hi,

    ich möchte eine Programm schreiben, das einen string entgegennimmtund entscheidet, ob er in einer vordefinierten Menge von Zeichenketten ist. Ungefähr so:

    enum schurkenstaaten {"Irak","Iran","Nordkorea"};

    ...

    bool istSchurkenstaat(string s)
    {return (S in schrkunstaaten);}

    ...

    So funktioniert es aber nicht, in einer enum dürfen z.b. keine strings stehen; und ob es den Operator in gibt weiss ich auch nicht!

    Also: Hat jemand eine elegante Lösung auf Lager?

    Danke im Vorraus!



  • <hier stand mist>

    wie wärs denn mit std::list?

    [ Dieser Beitrag wurde am 11.06.2003 um 23:04 Uhr von Doktor Prokt editiert. ]



  • Hi,

    ich weiß ja nicht, ob es das ist, was Du willst. Ich hab mal Deine ist_schurkenstaat zusammengebastelt:

    bool ist_schurkenstaat(std::string wert) {
    
       std::vector<std::string> x;
    
       x.push_back("Iran");
       x.push_back("Irak");
       x.push_back("Nordkorea");
    
       if ( std::find ( x.begin(), x.end(), wert) != x.end()) return true ;
       else return false;
       }
    

    grüße Con@n

    EDIT1: TRUE und FALSE durch true und false ersetzt. siehe unten
    EDIT2: siehe Peter

    [ Dieser Beitrag wurde am 11.06.2003 um 23:56 Uhr von Con@n editiert. ]

    [ Dieser Beitrag wurde am 12.06.2003 um 00:47 Uhr von Con@n editiert. ]



  • if ( std::find ( x.begin(), x.end(), wert) != x.end()) return TRUE ;
    else return FALSE;

    In C++ kannst du getrost 'true' und 'false' nutzen 😉

    mfg
    v R



  • x.push_back( ""); ?



  • Hi,

    @Peter,

    ok, man lernt nie aus. Ich hab das Buch von André Willms über die STL. dort steht drin, daß find einen Iterator auf x.end() zurückliefert, wenn es nichts findet, aber kein Wort davon, daß x.end() auf keinen Wert zeigt. Ich werds oben ändern

    grüße Con@n



  • ....versuch's mal damit

    #include <iostream.h>
    #include <stdlib.h>
    #include <stdio.h>

    int main()
    {

    enum staat {Irak, Iran};
    staat schurkenstaat;
    schurkenstaat=Irak;
    //Hinweis:
    //Irak wird zu einer symbolischen Konstanten mit dem Wert 0
    //Iran wird zu einer symbolischen Konstanten mit dem Wert 1

    if (schurkenstaat==0)cout<<"Irak ist ein Schurkenstaat ";
    // es geht aber auch (schurkenstaat==Irak)

    getchar();
    return 0;
    }



  • Es gibt in der STL auch ein template SET das sets implementiert.

    Ansonsten kennt C++ keine set's.


Anmelden zum Antworten