String umdrehen
-
underflow schrieb:
nwp3 schrieb:
Weiterhin möchtest du den String input als Referenz und nicht als Kopie übergeben, sonst hat dreh keine Wirkung.
Das macht er schon richtig.
Ups. WTB Löschfunktion.
-
Also so geht es jetzt.
std::string dreh(const std::string& input) { std::string output; for(size_t i = input.length()-1; i-- >0; ) { output += input[i]; } return output; } int main() { std::string input = "test123"; std::cout << dreh(input); }
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?
-
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.