Urgs, sei mir nicht böse, aber das ist extrem unlesbar.
Hallo Endurion
Selbstverständlich bin ich dir nicht böse wegen so etwas, jeder hat ein Recht auf seine Meinung, aber ich denke es ist dir auch klar, dass ich diese Aussage so nicht stehen lassen kann, da sie schlicht falsch ist. Ich bin einverstanden, dass deine Variante marginal lesbarer ist (hauptsächlich weil die Stringklasse unverständlicherweise keine substr-Methode anbietet die mit Iteratoren arbeitet), allerdings kann hier weder von "unlesbar" noch "extrem" die Rede sein. Ob ich jetzt mit number.end() prüfe oder std::string::npos sollte nicht dazu führen dass allen Lesern nur ein "Holy crap"-mässiges Fragezeichen im Kopf stehen bleibt. Auf weitere Aspekte wie Erweiterbarkeit (wie viele Collections haben find_first_not_of als Member und bei wie vielen Collections funktioniert std::find?) möchte ich hier nicht eingehen, das ist ja so gesehen nicht das Thema und es ist am Ende nichts weiter als eine subjektive Meinung.
Und es ist C++11, das hat man auch evtl. nicht zur Verfügung.
Dies kannst du so nicht sagen. Visual Studio unterstützt den C++11 Standard noch lange nicht, dennoch kann ich schon seit ca. 3 Jahren Lambdaausdrücke verwenden. Das selbe gilt auch für GCC, da sind Lambdaausdrücke auch schon ziemlich genau 3 Jahre offizielle supported. Man kann also getrost Lambdaausdrücke verwenden (ausser man verwendet clang, die sind was C++-Features anbelangt immer etwas hinterher, aber wer tut das schon für C++?) ohne sich irgendwelche Gedanken machen zu müssen. Im Gegensatz zu Betriebssystemen werden Compiler je länger je mehr ziemlich schnell auf den neusten Stand gebracht.
Grüsse
Cromon