Cstring -> find.funktion
-
Hallo.
Ich habe nun ein Code, wo wir mit Cstrings gearbeitet haben.Nun will ich an einer Stelle ne Suche einabauen, doch das normale .find Synthax funktioniert nicht:
string::size_type sPetersuchen = strtok2.find( "Peter", 0);Es kommt immer der Fehler:
Error 2 error C2039: 'find' : is not a member of 'ATL::CStringT<BaseType,StringTraits>'
Wo liegt der Fehler? Wie kann ich ihn beheben?
Für jede Antwort bin ich dankbar.
-
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
-
_matze schrieb:
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
Danke aber hat trotzdem jemand ne Idee, wo mein Fehler liegt ?
-
wuchtig schrieb:
_matze schrieb:
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
Danke aber hat trotzdem jemand ne Idee, wo mein Fehler liegt ?
ahh so klappt es nun:
string::size_type sHallosuchen = strtok2.Find( _T("hallo"), 0);aber es kommt dabei die Zahl
3435973836 unsigned int
raus.
Das erscheint mri doch ein wenig groß
-
wuchtig schrieb:
_matze schrieb:
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
Danke aber hat trotzdem jemand ne Idee, wo mein Fehler liegt ?
Das war der Fehler! Ich sagte nicht, dass ich genauestens auf Groß-/Kleinschreibung achte, sondern dass der Compiler das tut. Der meldet einen Fehler, weil er keine Methode CString::find findet. Er kennt aber die Methode CString::Find. Wenn du nun also statt "find" "Find" schreibst, sollte es klappen.
-
_matze schrieb:
wuchtig schrieb:
_matze schrieb:
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
Danke aber hat trotzdem jemand ne Idee, wo mein Fehler liegt ?
Das war der Fehler! Ich sagte nicht, dass ich genauestens auf Groß-/Kleinschreibung achte, sondern dass der Compiler das tut. Der meldet einen Fehler, weil er keine Methode CString::find findet. Er kennt aber die Methode CString::Find. Wenn du nun also statt "find" "Find" schreibst, sollte es klappen.
Sorry and thanks.

-
wuchtig schrieb:
wuchtig schrieb:
_matze schrieb:
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
Danke aber hat trotzdem jemand ne Idee, wo mein Fehler liegt ?
ahh so klappt es nun:
string::size_type sHallosuchen = strtok2.Find( _T("hallo"), 0);aber es kommt dabei die Zahl
3435973836 unsigned int
raus.
Das erscheint mri doch ein wenig großwas immer 'string.sizetype' sein soll, aber da müsste eigentlich 'int' hin.
CString.Find spuckt -1 aus, wenn nix gefunden wurde. vielleicht findet er nichts bei dir?

-
Basher schrieb:
wuchtig schrieb:
wuchtig schrieb:
_matze schrieb:
Erstens heißt die Klasse CString und nicht Cstring, und zweitens heißt die Methode Find und nicht find. C++ achtet ganz genau auf Groß-/Kleinschreibung...
Danke aber hat trotzdem jemand ne Idee, wo mein Fehler liegt ?
ahh so klappt es nun:
string::size_type sHallosuchen = strtok2.Find( _T("hallo"), 0);aber es kommt dabei die Zahl
3435973836 unsigned int
raus.
Das erscheint mri doch ein wenig großwas immer 'string.sizetype' sein soll, aber da müsste eigentlich 'int' hin.
CString.Find spuckt -1 aus, wenn nix gefunden wurde. vielleicht findet er nichts bei dir?

Stimmt. Habs geändert.
Und auch gleich ne tolle If-Abfrage gebastelt (!= -1)
Ehm noch eine Frage:
Wie mache ich das, dass er immer nur an den ersten beiden Stellen sucht?
Wenn ich z.b. nach XX suche.XXuser=tripleXXX
Da z.B. soller NUR die ersten beiden prüfen ..ob da hinten irgendwo XX vorkommt ist egal.
Sprich er solll immer nur gucken, ob an den ersten beiden Stellen ein XX ist
-
Kannste doch z.B. ganz einfach über den operator[] machen.
if(myString[0]=='X' && myString[1]=='Y') { /*...*/ }
-
Kann ich nicht irgendwie sagen
Find().... such nur von der Stelle 0-5??!
-
Find liefert dir doch den Index des ersten Zeichens des gefundenen Strings zurück. Du kannst einfach darauf prüfen, ob der gefundene String im von dir gewünschten Bereich liegt.
-
Hallo,
wuchtig schrieb:
Kann ich nicht irgendwie sagen
Find().... such nur von der Stelle 0-5??!
Dafür gäbe es die Methode substr (bei Einsatz eines CString wäre Left möglich).
MfG,
Probe-Nutzer