transform tolower

Thomasio

Erfahrenes Mitglied
Ich habe da einen netten 2-Zeiler, der mir einen std::string in Kleinbuchstaben umsetzt:

Code:
int (*pf)(int)=tolower;
transform(MyString.begin(),MyString.end(),MyString.begin(),pf);

Die erste Frage ist jetzt: Geht das auch mit wstring?
Also: "ÄÖÜ" wird zu "äöü"
Wenn ja, geht das ohne Änderung im Code, oder wie anders?

Wie geht das mit UTF-8?
Also etwa wenn ich einen wstring mit WideCharToMultiByte(CP_UTF8,...) konvertiert habe, kann ich den dann noch in Kleinbuchstaben umsetzen, inkl. Sonderzeichen, oder geht das nur vorher?
 
Hi.
Ich habe da einen netten 2-Zeiler, der mir einen std::string in Kleinbuchstaben umsetzt:

Code:
int (*pf)(int)=tolower;
transform(MyString.begin(),MyString.end(),MyString.begin(),pf);

Die erste Frage ist jetzt: Geht das auch mit wstring?
C99 definiert eine towlower Funktion.

Ansonsten, verwende Boost:
C++:
boost::to_lower(string);
Wie geht das mit UTF-8?
Du müßtest eine UTF-8 spezifische Funktion verwenden, die für Zeichen > 127 erkennt ob es ein Buchstabe ist und dementsprechend die Konvertierung durchführt.

Microsoft bietet eine _mbctolower bzw. _mbctolower_l Funktion.

Gruß
 
Zurück