Beste Weg, um zu finden, die eine whitespace-getrennte Wort in einem CString
Beispiel: "select * from somewhere where x = 1
"
Möchte ich finden, der whitespace-getrennte "where
", aber nicht die "where
" innerhalb "somewhere
". Im Beispiel "wo" wird durch ein Leerzeichen voneinander getrennt, aber es könnte sein, Zeilenschaltungen, Tabulatoren usw..
Anmerkung: ich weiß regex würde es einfach zu machen (die regex-äquivalent wäre "\bwhere\b
"), aber ich will nicht hinzufügen, eine regex-Bibliothek, um mein Projekt zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollte, die Reine MFC-Methode der string-manipulation, dann sollte dies funktionieren:
Ich weiß nicht die erste Sache über MFC und
CString
, aber in normalem C++ würde ich Sachen, die Zeichenfolge in einestd::istringstream
Lesen und in einen string:Nehme ich an
CString
funktioniert als stream-Operatoren überladen mit der entsprechenden Semantik, aber, wie gesagt, ich weiß es nicht.istream
-- das ich verstehe. Wie auch immer, ich würde nicht wissen, ob es einen stream-Puffer fürCString
. Ich nie verwendet die MFC.Ziemlich schnell und braucht nicht zu konstruieren schwer
istringstream
Objekte.Wenn Sie mithilfe von Visual Studio 2008 Feature Pack, die Sie bereits haben std::tr1::regex in C++.
Gut, regex ist die richtige Antwort. Wenn Sie nicht mit einbeziehen möchten, regex, haben Sie, um zu versuchen und umzusetzen, ein wenig regex selbst und die Suche nach dem " wo ".
Ihre einzige andere option, die ich denke, wäre die Suche nach dem "wo", dann überprüfen Sie die Zeichen vor und nach dem Spiel zu sehen, wenn Sie whitespace-Zeichen.