1

c++ if() - Frage

Frage von hamzaaa hamzaaa

Hallo, mal wieder brauche ich eure Hilfe. Das Schema des Programm sieht so aus: 1. Benutzer gibt einen Satz ein --> dieser wird (mit cin >> gespeichert) 2. Überprüfe ob das Wort (der string) "xxxxx" in dem Satz des Benutzers enthalten ist. 3. Wenn das Wort enthalten ist: cout << "okay" << endl; 4. Sonst cout << "nein" << endl;

Mein Problem liegt genau bei 3. "Wenn das Wort enthalten ist" wie mache ich das mit einer if() Bedingung? Ich habe in vielen Laufzeitbibliotheken (MSDN etc.) geguckt und konnte nichts finden...Könnte mir jemand eine Vorlage für den Code liefern? Das wäre sehr nett!

Fragen zu gleichen Themen finden

Antworten (3)

  • 0
    Antwort von hamzaaa hamzaaa

    find() habe ich auch schon gefunden! Könnte mir jemand das Programm mit find() schreiben? Es sind ja nur ein paar Zeilen und ich habe keinen blassen Schimmer wie ich das machen soll.

  • 0
    RatgeberHelden Antwort von tobistenzel tobistenzel

    Die C++ Strings können ja eigentlich sehr wenig, aber da hast du Glück ;) Wundert mich, dass du nichts gefunden hast, std::string hat eine Methode namens find(). Schau mal nach der.

    Kommentar von hamzaaa hamzaaahamzaaa

    könntest du mir mit find() zeigen wie das funktioniert? das wäre wirklich sehr nett!

  • 0
    Antwort von possel possel

    Schau mal, ob dir das Beispiel unter

    http://www.cplusplus.com/reference/string/string/find/

    weiterhilft :-)

    Kommentar von hamzaaa hamzaaahamzaaa

    da geht es aber um die Position des strings. Ich wir nur lediglich wissen ob der string überhaupt enthalten ist und dann mit einer if() Verzweigung weitermachen. Wie könnte das aussehen?

    Kommentar von tobistenzel tobistenzeltobistenzel

    Steht doch in dem Link ganz eindeutig drin. Nochmal lesen...

    Kommentar von hamzaaa hamzaaahamzaaa

    nein. da steht doch string::npos ich will doch aber nicht die position sondern nur prüfen ob der string überhaupt vorhanden ist.

    Kommentar von tobistenzel tobistenzeltobistenzel

    Eben, deswegen sollst du das auch genau anschauen ;)

    Wenn du von find() string::npos zurückbekommst weißt du dass der String nicht enthalten ist. Die Beispiele zeigen das ja ganz klar, halt nur umgedreht:

    found=str.find(str2);
    if (found!=string::npos) ...
    

    Die If-Bedingung ist wahr, wenn found ungleich npos ist, also wenn etwas gefunden wurde. Da hast du doch deinen Test, ob etwas vorhanden ist. Besser gehts mit der Standardbibliothek nicht, soweit ich weiß.

    Du hast dir auch eine der schwierigsten Sprachen ausgesucht... Obwohl ich sagen muss, dass das für C++-Verhältnisse extrem einfach ist, was ich da schon an Problemen damit hatte. ;)

    In Python wäre das etwas deutlicher:

    if "wort" in eingabe:
        print("okay")
    else:
        print("nein")
    
    Kommentar von hamzaaa hamzaaahamzaaa

    Vielen Dank erstmal, aber er gibt nur dann "okay" zurück, wenn das Wort zu Beginn der Eingabe steht. Es soll allerdings irgendwo im Satz auftauchen. Wie prüfe ich mit npos das?

    Hier der Code:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
      string str2 ("xxx");
      string eingabe;
      size_t found;
    
      cout << "Was möchtest du tun?" << endl;
      cin >> eingabe;
      found = eingabe.find(str2);
      if(found != string::npos)
        {
          cout << "okay" << endl;
        }
      else
        {
          cout << "no" << endl;
        }
      return 0;
    }
    

    Ich habe übrigens versucht das eigentlich Problem auf das möglichst einfachste Level zu bringen; nur so lernt man doch was dazu :)

Diese Frage

Verwandte Fragen

Noch nicht den richtigen Rat gefunden?

Einfach und schnell viele hilfreiche Ratschläge von Deutschlands aktivster Ratgeber-Community erhalten!

Einfach und schnell einen Tipp erstellen und Ihren guten Rat mit anderen teilen!

Einfach und schnell ein Video hochladen und anschaulichen Rat an alle geben!

Die unter gutefrage.net angebotenen Dienste und Ratgeber Inhalte werden nicht geprüft. Die Richtigkeit der Inhalte wird nicht gewährleistet. Rechtliche Hinweise finden Sie hier.