ganzes wort überprüfen



  • Hi,

    ich wollte fragen wie ich ein ganzes wort geschickt überprüfen kann, da man ja nicht folgendes machen kann:

    char input[25];
    
    std::cin >> input;
    
    switch(input)
    {
       case "hallo":
       {
          std::cout << "Hallo";
       }
    }
    

    Mfg Yazoo

    P.S.: :xmas1: :xmas1: :xmas1: Sorry das ich in letzter Zeit so viel frage. :xmas1: :xmas1: :xmas1:



  • Strings kannst du nicht akls case-Marken verwenden - da mußt du auf die "klassische" if-else-Kaskade ausweichen (oder mit Arrays und find() arbeiten):

    char input[25];
    
    std::cin >> input;
    
    if(strcmp(input,"hallo")==0)
    {
      std::cout << "Hallo";
    }
    else
      ...
    
    //oder besser:
    
    string input;
    
    cin>>input;
    
    if(input=="hallo")
      cout<<"Ebenfalls Hallo!";
    else
      ...
    
    //und als besonderes Schmankerl noch die Lösung mit Arrays:
    string valid_inputs[]={"hallo","guten tag",...};
    int valid_count = sizeof(valid_inputs)/sizeof(string);
    
    string input;
    cin>>input;
    switch(find(valid_inputs,valid_inputs+valid_count,input)-valid_inputs)
    {
    case 0://"hallo"
      cout<<"Hallo";break;
    case 1://"guten tag"
      cout<<"Ganz wie du wünschst";break;
    ...
    }
    


  • danke das hat mir schonmal sehr geholfen

    vielleicht noch eine kleine frage:
    was müsste ich machen, wenn ich 2 Wörter auf einmal einlesen möchte?



  • getline() verwenden (oder dem Nutzer erklären, daß er seine Wörter mit _ anstelle von Leerzeichen trennen soll :D).



  • thx



  • CStoll schrieb:

    Strings kannst du nicht akls case-Marken verwenden - da mußt du auf die "klassische" if-else-Kaskade ausweichen (oder mit Arrays und find() arbeiten):

    .NET generiert Hastabellen für String-switch-Blöcke. Hashtabellen sind hier sicher von der durchschnittlichen Performance am geeignetsten. Leider unterstützt bisher kaum ein Compiler eine standardisierte Hashtabelle, aber immerhin kennt der aktuelle GCC schon 'std::tr1::unordered_map' und unter VC++ kann man ja bis Frühjahr 2008 noch auf 'stdext::hash_map' ausweichen.

    – Alle anderen Methoden benötigen auch im Durchschnitt eine logarithmische Laufzeit, während Hashtabellen oft konstante Laufzeit ermöglichen.


Anmelden zum Antworten