String umdrehen
-
Es ist kürzer, übersichtlicher, es gibt keine Out-of-bound-errors und es macht keinen relevanten Geschwindigkeitsunterschied. Also: besser
-
MichaelBr schrieb:
Marthog schrieb:
std::string umdrehen(const std::string& input) { return std::string(input.rbegin(), input.rend()); }
Ist das besser als meines oder gibt es noch was anderes zum verbessern?
std::string str = "test123"; std::reverse(str.begin(), str.end());
-
Zumindest ist es kürzer und übersichtlicher
Edit: Darn, einfach zu langsam.
-
phanzy schrieb:
Zumindest ist es kürzer und übersichtlicher
Edit: Darn, einfach zu langsam.
4 Sekunden.
-
vonwegen std::string und UTF-8 http://www.c-plusplus.net/forum/p2346091#2346091
-
std::string + http://utfcpp.sourceforge.net/
-
Ethon, danke, danke, danke!
Der Link hat mir die Ferien gerettet!
Danke!
-
Das ganze Vorhaben ist unsinnig. Als Übungsaufgabe in Ordnung ("Wir sollen eine Funktion schreiben, die einen String umdreht."), aber aus Unicode-Sicht unmöglich.
Wie willst du "œ" umdrehen? Wie "¨o" (Ein Graphem)? Als Beispiel wird "aü" codepointweise umgedreht zu "uä" (wenn als "a¨u" abgespeichert).
Ja, std::string ist Unicode-aware, aber er schützt nicht vor falscher Benutzung. Wie der Java-String übrigens.
(utf8-cpp hilft da überhaupt nicht, weil auf Codepoints zu operieren nichts bringt)
-
Natürlich klappt das mit utfcpp? Einfach rückwärts die Codepoints iterieren und den String zusammenbauen.
-
Ethon schrieb:
Natürlich klappt das mit utfcpp? Einfach rückwärts die Codepoints iterieren und den String zusammenbauen.
Codepoint != Zeichen, siehe mein Beispiel.