2017-02-19 1 views
-4

Ich möchte wissen, wie ich leere oder whitespaces innerhalb Teilkette in C++ finden kann. Zum Beispiel:C++ find whitespaces in Teilzeichenfolge

string str = "()"; // or str = "()" 

Hier möchte ich sicherstellen, dass immer etwas zwischen Klammern ist. Funktion isspace() braucht nur ein Zeichen, also muss ich in Schleife suchen. Gibt es einen besseren Weg, dies zu tun? Danke für Ihre Hilfe.

+1

[Reguläre Ausdrücke] (http://en.cppreference.com/w/cpp/regex) vielleicht? –

+0

Sie können die Funktion rekursiv schreiben. Aber es hat keinen Sinn, eine Schleife zu vermeiden. Loops sind für diese Situation, gehen Sie von '(' zu ')' Whitespace (und überlegen, was passiert, wenn es kein ')' oder Sie treffen ein anderes '('. –

+0

@Someprogrammerdude: Danke für die schnelle Antwort. Ja kann ich verwenden Regex Ich möchte nur wissen, ob es etwas gibt, um nach leeren oder Leerzeichen Substring zu überprüfen. Ich denke, Sie haben Recht Malcolm. Vielen Dank für Ihre Hilfe. – mehtame026

Antwort

0

können Sie verwenden, um die std::string::find()( und ) Zeichen zu finden, dann std::string::first_first_not_of() verwenden für alle Nicht-Leerzeichen zwischen diesen Indizes zu überprüfen.

string str = "()"; // or str = "()" 
string::size_type idx1 = str.find("("); 
if (idx1 != string::npos) { 
    ++idx1; 
    string::size_type idx2 = str.find(")", idx1); 
    if (idx2 != string::npos) { 
     string tmp = str.substr(idx, idx2-idx1); 
     string::size_type idx3 = tmp.find_first_not_of(" \t\r\n"); 
     if (idx3 != string::npos) { 
      ... 
     } 
    } 
} 
+0

Danke Remy. werde diese Lösung versuchen. – mehtame026