std::string::tolower()?

Mai 17th, 2008 | Kategorien: C++ | Tags: , ,

So manch einer der auf C++ umsteigt wundert sich, warum man dort anscheinend keine tolower Methode kennt. Aber es gibt sie ;) Sie ist “nur” etwas versteckt. Die Vorgehensweise für den Nachbau von toupper ist naheliegenderweise sehr ähnlich.

Das Zauberwort heißt std::tolower in Kombination mit std::transform. std::transform wird genutzt, um einen Bereich (begrenzt durch zwei Iteratoren) gleichzeitig zu kopieren und mit einer Funktion umzuwandeln. Die Signatur von std::transform sieht in etwa so aus:

OutputIterator transform(InputIterator first,
                         InputIterator last,
                         OutputIterator result,
                         UnaryOperation op);

Dabei ist es kein Problem, wenn first und result identisch sind. op bezeichnet die Funktion, die wir für jedes zu transformierende Objekt aufrufen wollen.

Mit diesem Rüstzeug können wir einen beliebigen String “verkleinern”:

// Converting the string to lowercase
std::string string("I aM WriTten In MixED cASe!");
std::transform(string.begin(), string.end(), string.begin(), std::tolower);

Edit am 7.9.2008:

Da hab ich doch glatt vergessen die header mit “bekanntzugeben”. Also hier:

#include <string> // std::string
#include <algorithm> // std::transform
#include <cctype> // std::tolower
No comments yet.