Kurioses mit string.find() bzw. wstring.find()
-
Na das ist ja eine kuriose Lösung, die sich ein wohl perverser MS-Entwickler ausgedacht hat nicht der Returnwert an sich (wie man das sonst annehmen würde) sagt was über das Ergebnis der Suche aus sondern nur wenn man ihn mit std::string::npos vergleicht, ansonsten stehen da irgendwelche astronomisch hohen Zahlen, mit denen man nix anfange kann. Sowas Bescheuertes, da kommt man nicht mal eben so drauf ...
-
Und das hat nix mit C++/CLI zu tun. Lern den Unterschied.
Edit:
Und da hat MS wohl nur wenig damit zu tun. Das betrifft ISO C++ und damit das C++ Standard Committee. Abhilfe schafft hier einfach die Doku lesen.
-
Nun werd mal nicht gleich pampig ich habe die Doku gelesen, seit Wochen tu' ich doch nix anderes, aber oft hilft sie nicht richtig weiter, warum ist wohl sonst das web voll Fragen zu sowas.
Na dann war es eben nicht ein perverser MS-Programmierer sondern ein anderer Perverser ... oder findest du diese Lösung etwa "normal" im Sinne von "das wird bei C++ gewöhnlch so gemacht"?
int i = str.find(L"X", 0); //suche erstes "X" in str ab erster Position
if (i == string::npos) //nicht gefunden
if (i != string::npos) //gefunden, Startindex ist in iWas für ein Käse ...
-
Du sollst auch die Position nicht in
int
speichern, weil der Rückgabetyp vonstd::string::find(..)
ein anderer ist, nähmlichstd::string::size_type
und das wiederum ist üblichweise alsstd::size_t
definiert - das braucht einem aber nicht zu interessieren.Am besten verwendet man hier
auto
.
-
"int i" oben war auch Quatsch (Gewohnheit halt), std::wstring::size_type ist richtig und hatte ich auch. hmmmm, das mit auto muss ich mir mal näher ansehen