Ich begann gestern über regex Lernen und beim Lernen, sah ich, dass \ für Leerzeichen verwendet wird, s. Wenn ich jedoch ein Leerzeichen eingeben möchte, wird es in C++ nicht erkannt. s funktioniert nicht in C++ regex
Code:
#include <iostream>
#include <regex>
using namespace std;
int main() {
string str;
cin>>str;
regex e("a+\\s+b+");
bool found = regex_match(str,e);
if (found)
{
cout<<"Matched";
}
else
{
cout<<"No Match";
}
return 0;
}
Eingang: ab
Ausgang: Kein Spiel
wenn ich ersetzen \\s
mit \\w
innerhalb des oben genannten Code und Eingang etwas wie folgt aus:
Input: 0 azb Ausgang: Matched
Ich verstehe nicht, warum \ s einfach weigert zu arbeiten. Ich habe online nach einer Antwort auf dieses Problem gesucht, konnte aber nicht herausfinden, was genau das verursacht.
I verwenden Codeblocks 16 mit IDE GNU/GCC-Compiler mit Unterstützung auf Windows 11 aktiviert C++ und C++ 14 (GCC 5.1) auf IDEONE.
Jede Hilfe würde sehr geschätzt werden. Vielen Dank.
Ah, äh, ja, hier das Problem ist, dass 'cin >> str' beim ersten Leerzeichen Lesen zu stoppen. Ich empfehle, dass Sie stattdessen den Wert von 'str' codiert den regulären Ausdruck für die Prüfung:' String str = „Hallo Welt“; ' –
@ magnus-hoff richtig ist. cin >> str; => getline (cin, str); – pavnik
Wow, ich fühle mich dumm. Vielen Dank für die Klärung. – Overlord