Das Design der glänzend neuen Zeichenklasse der Standardbibliothek wurde bereits durchgeführt, als Stroustrup das Standardkomitee zur STL einführte. Das Komitee gefiel das STL und begann es in den Standard zu integrieren, wodurch vieles von dem übernommen wurde, was sie bereits vereinbart hatten (und wahrscheinlich auch den Standard für ein oder zwei weitere Jahre verschieben würde).
Neben anderen Änderungen wurden Iteratoren der bereits fertigen String-Klasse als ein Nachdenken hinzugefügt. Sie können dies sehen, indem Sie die verschiedenen String-Mitglieder betrachten, die eine Position einnehmen/zurückgeben - es ist eine wilde Mischung aus Indizes und Iteratoren.
Es ist nicht immer einfach zu erraten, warum einige Member-Funktionen nur Index-nimmende Versionen haben und einige Iterator-take-Versionen. Im Fall von std::basic_string<>::find()
scheint es jedoch einfach zu sein: Da std::find()
bereits einen Iterator zurückgibt, wurde std::basic_string<>::find()
unverändert belassen.
Sie sagen also, die schlechte Schnittstelle von 'string :: find' ist eigentlich gut, weil sie gut mit der schlechten Schnittstelle von' string :: substr 'interagiert? ;) – Praxeolitic
Ich möchte nicht mit Iteratoren herumspielen, wenn ich nur die ersten zwei Buchstaben einer Zeichenkette erhalten möchte – shoosh
mag es: begin() + pos – fchen