string.find() Alternative mit Bool-Rückgabewert
-
Hallo,
Ich möchte, falls ein String ".mp3" beinhaltet, eine Funktion ausführen lassen.
Meine Version:if(test.find(".mp3")) //oder eben if (!test.find(".mp3")){} { makedir(artist, music_dir); }Nun musste ich aber feststellen dass diese Funktion keinen boolean'schen Wert zurückgibt, sodass die obige syntax Unsinn ist.
Was tun, sprach Zeus?
-
In der Referenz http://www.cplusplus.com/reference/string/string/find/ nachschauen, sehen, dass im Fehlerfall string::npos zurückgegeben wird und darauf prüfen:
if(test.find(".mp3") != std::string::npos) { makedir(artist, music_dir); }
-
Oder std::find_if() benutz0rn. :xmas1: :xmas2:
-
Kóyaánasqatsi schrieb:
Oder std::find_if() benutz0rn. :xmas1: :xmas2:
Oder:
bool myFind(const std::string& str, std::string& toFind) { return str.find(toFind) != std::string::npos; } if (myFind(test, ".mp3")) { // ... }
-
Kóyaánasqatsi schrieb:
Oder std::find_if() benutz0rn.
Inwiefern hilft das dem Fragesteller, der einen
bool-Rückgabewert haben will?uuuuz schrieb:
Oder:
bool myFind(const std::string& str, std::string& toFind) { return str.find(toFind) != std::string::npos; }Gute Idee.
toFinddarfst du aber auch als Const-Referenz übergeben.