Namespaces
Variants

std:: tolower

From cppreference.net
Definiert in Header <cctype>
int tolower ( int ch ) ;

Wandelt das angegebene Zeichen gemäß den Zeichenkonvertierungsregeln der aktuell installierten C-Locale in Kleinbuchstaben um.

In der Standard-Lokalisierung "C" werden die folgenden Großbuchstaben ABCDEFGHIJKLMNOPQRSTUVWXYZ durch entsprechende Kleinbuchstaben abcdefghijklmnopqrstuvwxyz ersetzt.

Inhaltsverzeichnis

Parameter

ch - zu konvertierendes Zeichen. Wenn der Wert von ch nicht als unsigned char darstellbar ist und nicht gleich EOF ist, ist das Verhalten undefiniert

Rückgabewert

Kleinbuchstaben-Version von ch oder unverändertes ch falls keine Kleinbuchstaben-Version in der aktuellen C-Locale vorhanden ist.

Hinweise

Wie alle anderen Funktionen aus <cctype> ist das Verhalten von std::tolower undefiniert, wenn der Wert des Arguments weder als unsigned char darstellbar noch gleich EOF ist. Um diese Funktionen sicher mit einfachen char s (oder signed char s) zu verwenden, sollte das Argument zuerst in unsigned char konvertiert werden:

char my_tolower(char ch)
{
    return static_cast<char>(std::tolower(static_cast<unsigned char>(ch)));
}

Ebenso sollten sie nicht direkt mit Standardalgorithmen verwendet werden, wenn der Werttyp des Iterators char oder signed char ist. Konvertieren Sie stattdessen den Wert zunächst zu unsigned char :

std::string str_tolower(std::string s)
{
    std::transform(s.begin(), s.end(), s.begin(),
                // static_cast<int(*)(int)>(std::tolower)         // falsch
                // [](int c){ return std::tolower(c); }           // falsch
                // [](char c){ return std::tolower(c); }          // falsch
                   [](unsigned char c){ return std::tolower(c); } // korrekt
                  );
    return s;
}

Beispiel

#include <cctype>
#include <clocale>
#include <iostream>
int main()
{
    unsigned char c = '\xb4'; // the character Ž in ISO-8859-15
                              // but ´ (acute accent) in ISO-8859-1
    std::setlocale(LC_ALL, "en_US.iso88591");
    std::cout << std::hex << std::showbase;
    std::cout << "in iso8859-1, tolower('0xb4') gives " << std::tolower(c) << '\n';
    std::setlocale(LC_ALL, "en_US.iso885915");
    std::cout << "in iso8859-15, tolower('0xb4') gives " << std::tolower(c) << '\n';
}

Mögliche Ausgabe:

in iso8859-1, tolower('0xb4') gives 0xb4
in iso8859-15, tolower('0xb4') gives 0xb8

Siehe auch

wandelt ein Zeichen in Großbuchstaben um
(Funktion)
wandelt ein Zeichen unter Verwendung des ctype Facets einer Locale in Kleinbuchstaben um
(Funktionstemplate)
wandelt ein Breitzeichen in Kleinbuchstaben um
(Funktion)
C-Dokumentation für tolower

Externe Links

1. ISO/IEC 8859-1 . Von Wikipedia.
2. ISO/IEC 8859-15 . Von Wikipedia.