Frage

Wie kann ich eine wchar_t Zeichenfolge aus Großbuchstaben umwandeln Fall zu senken, in C ++?

Die Zeichenfolge enthält eine Mischung aus Japanisch, Chinesisch, Deutsch und Griechisch Zeichen.

Ich dachte über die Verwendung von towlower ...

http://msdn.microsoft.com/ en-us / library / 8h19t214% 28VS.80% 29.aspx

.. aber die Dokumentation sagt, dass:

  

Der Fall Umwandlung von towlower ist locale-spezifisch. Nur die Zeichen, die für die aktuellen Locale werden, falls geändert.

Edit: Vielleicht sollte ich beschreiben, was ich tue. Ich erhalte eine Unicode-Suchabfrage von einem Benutzer. Es ist ursprünglich in UTF-8-Codierung, aber ich bin Umwandlung in eine widechar (I auf dem Wortlaut falsch sein kann). Mein Debugger (VS2008) korrekt zeigt die Japaner, Deutsch, usw. Zeichen in der "Variable schnell watch". Ich muss durch einen anderen Satz von Daten in Unicode gehen und Spiele der Suchbegriff zu finden. Während dies ist kein Problem für mich zu tun, wenn die Suche empfindlich Fall ist es problematischer, es zu tun Groß- und Kleinschreibung. Mein (vielleicht naiv) Ansatz, das Problem zu lösen wäre, alle Eingangsdaten und Ausgangsdaten in Kleinbuchstabe zu konvertieren und dann vergleichen.

War es hilfreich?

Lösung

Wenn Ihr String alle diese Zeichen enthält, muss der codeset sein Unicode-basiert. Wenn sie richtig umgesetzt werden, Unicode (Kapitel 4 ‚ ICU (International Components for Unicode).

Andere Tipps

Sie haben ein unangenehmes Problem in der Hand. Ein japanisches Gebietsschema wird nicht helfen, kehren Deutschen und umge konvertieren. Es gibt Sprachen, die entweder nicht das Konzept von captalization haben (toupper und Freunde wäre ein no-op hier, nehme ich an). So können Sie Ihre Zeichenfolge in einzelne Stücke von Wörtern aus der gleichen Sprache brechen? Wenn Sie können, dann können Sie die Stücke konvertieren und String sie.

Diese SO beantworten zeigt, wie mit Facetten arbeiten mit mehreren Schauplätzen zu arbeiten. Wenn dies auf Windows ist, können Sie mit Win32-API-Funktionen prüfen, wenn Sie mit C arbeiten können ++. NET (verwaltete C ++), können Sie die char.ToLower und string.ToLower Funktionen nutzen zu können, die Unicode-kompatibel sind.

Hier finden Sie aktuelle _wcslwr_l in <wchar.h> ( MSDN ).

Sie sollten in der Lage sein, die Funktion am Eingang für jeden der Schauplätze laufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top