Warum gibt es kein std::string.to_lower()



  • Könnte mir bitte Jemand erklären warum es keine lowercase Funktion für Strings in der STL gibt? Ich meine es ernst.

    Warum muss ich abartig unübersichtlichen Code erstellen und std::transform verwenden? Das zieht doch einen Rattenschwanz an Nebenbedingungen mit sich die jeder für sich programmieren muss. Klar kann ich Boost verwenden. Wer könnte schon auf die Idee kommen ganz einfach strings in lowercase zu verwandeln?

    Es erinnert mich irgendwie an std::to_string( double ) und ähnliche Funktionen die Jahrzehnte gefehlt haben.

    Wenn wir schon dabei sind. Was ist der Stand der Technik was Strings angeht. Welche soll ich bevorzugt verwenden? UTF8? UTF16? Unicode? Ist da eventuell ein Konsens absehbar.



  • Ich habe mich auch schon 100x geärgert, dass sowas wie "begins_with" und "ends_with" fehlt. Schön und gut, dass man das auch anders machen kann, aber das ist einfach "einfacher", wenn solche Funktionen schon da sind.

    Allerdings gibt es ein Problem: man muss wissen, wie ein String kodiert ist, um to_lower zu implementieren. Und auch bei ends_with bin ich mir nicht sicher, ob UTF-16 mir da was kaputt machen könnte.

    Was ist der Stand der Technik was Strings angeht. Welche soll ich bevorzugt verwenden? UTF8? UTF16? Unicode? Ist da eventuell ein Konsens absehbar.

    UTF-8 und -16 sind beides Unicode. Nur eben anders kodiert. Es gibt aber mehr Zeichen als in 16 bits passen.

    Ich würde bei der Kodierung UTF-8 bevorzugen. Aber wenn z.B. all deine Bibliotheken, die du sonst so nutzt (wie z.B. Qt), UTF-16 nutzen, dann ergibt es wenig Sinn, UTF-8 zu nehmen.

    Ich fand auch https://www.youtube.com/watch?v=ysh2B6ZgNXk ganz erhellend.



  • wob schrieb:

    Ich habe mich auch schon 100x geärgert

    Besser nur einmal ärgern und dann fehlenden/unkonfortablen (z.B. alle f(it.begin(), it.end(),...)) Funktionen in deinen stdex (oder was auch immer) namespace der netten Funktionen packen 🙂



    1. boost string algorithms library. Wenn man schnell mal was braucht.
    2. Ich nehme immer utf8 an für std::string. Werde immer "ungehalten", wenn das jemand anders sieht, weil dann wirds chaotisch.
    3. Dass die GUI Welt sich scheinbar "immer" für UTF-16 entscheidet, finde ich auch nervig. Versuche dann std::string <-> Qt / Win zu vermeiden wo es geht und es getrennt zu halten. Andernfalls konsequent konvertieren.

    std::wstring brauche ich auch nicht.

    Kodierung fand ich schon immer lästig. Besonders wenn man mit Dingen arbeitet, wo es jemand nicht verstanden hat. Und besonders weil es Platformverschiedenheiten einführt.

    EDIT: 2k posts.


Log in to reply