2017-09-11 3 views
-2

Dies ist der Code Ich beziehe mich auf:Überprüfen Sie, ob das erste Wort in Zeichenfolge gleich „print“

string command; 
getline(cin, command); 

Zum Beispiel, wenn jemand "print Hello" eintritt, wie kann ich, wenn das erste Wort Check-in die Zeichenkette ist "print"?

+0

Wie definieren Sie "Wort"? Was passiert zum Beispiel, wenn jemand "printhello" eingibt oder einfach nur "druckt"? Sollte einer von beiden übereinstimmen? – cdhowie

+1

Verwenden Sie einen Zeichenfolgenparser oder Tokenizer für ein Leerzeichen. Googeln Sie einfach "C++ String Parser" und es gibt eine Tonne Beispiele. –

+0

http://en.cppreference.com/w/cpp/string/basic_string/find Verwendung finden Funktion –

Antwort

4

Hier ist ein einfaches Beispiel, das die Funktion std::string::find Mitglied nutzt:

#include <iostream> 
#include <string> 
int main(){ 
    std::string command; 
    std::getline(std::cin, command); 
    if (command.substr(0, command.find(" ")) == "print"){ 
     std::cout << "Is print."; 
    } 
    else{ 
     std::cout << "Is not print."; 
    } 
} 

Wenn alles, was Sie tun müssen, ist zu überprüfen, ob die ersten 5 Zeichen, das Spiel „Druck“ Stringliteral dann die bedingte folgenden verwenden dass nutzt die std::string::substr Funktion:

if (command.substr(0, 5) == "print") 

wenn Sie überprüfen wollen, ob es sich um eine „Druck“ ist Liter al gefolgt von einem Leerzeichen verwenden:

if (command.substr(0, 6) == "print ") 
+0

Konnte 'command.find (" ")' mit 6 ersetzen und '" print "' mit '" print "' –

+0

@EdHeal Würde das für die Eingabe "print" nicht fehlschlagen? – cdhowie

+0

Was bedeutet eigentlich die "0" im if? –

Verwandte Themen