Frage

, fragte ich eine ähnliche Frage gestern, aber erkennen, dass ich es auf eine andere Weise rephasieren benötigen.

Kurz gesagt: In C ++ auf Windows, wie mache ich einen Groß- und Kleinschreibung Suche nach einer Zeichenkette (in einem anderen String), wenn die Strings in Unicode-Format (wide char, wchar_t) sind, und ich weiß nicht, die Sprache der Saiten. Ich will nur wissen, ob die Nadel im Heuhaufen existiert. Lage der Nadel ist nicht relevant für mich.

Hintergrund: Ich habe ein Repository eine Menge von E-Mail-Körper enthält. Die Nachrichten werden in verschiedenen Sprachen (Japanisch, Deutsch, Russisch, Finnisch, you name it). Alle Daten werden im Unicode-Format, und ich laden Sie es auf Wide Strings (wchar_t) in meiner C ++ Anwendung (die Körper wurden MIME entschlüsselt, so in meinem Debugger ich die tatsächlichen japanisch sehen kann, Deutsch Zeichen). Ich weiß nicht, die Sprache der Nachrichten, da E-Mails doensn't dieses Detail enthält, auch ein einzelner E-Mail-Körper Zeichen aus verschiedenen Sprachen enthalten.

Ich bin auf der Suche nach so etwas wie wcsstr, aber mit der Möglichkeit, die Suche in einem Fall, unempfindlich Weise zu tun. Ich weiß, dass es nicht möglich, eine 100% korrekte Umwandlung von Großbuchstaben in Kleinbuchstaben zu tun, ohne die Sprache des Textes zu kennen. Ich möchte eine Lösung, die in den 99% der Fälle funktioniert, wo es möglich ist.

ich Visual Studio 2008 mit C ++, STL und Boost-bin mit.

War es hilfreich?

Lösung

Boost-String-Algorithmen hat einen icontains ( ) Funktion Vorlage, die kann das tun, was Sie benötigen.

Andere Tipps

Sie haben die Sprache angeben, Groß- und Kleinschreibung Vergleich zu tun. Zum Beispiel in Türkisch, ‚i‘ ist nicht die Kleinbuchstaben entsprechend ‚I‘. Wenn die Sprache angegeben wird, erscheint nicht, dann wird der Vergleich mit einer implizit ausgewählten Sprache getan wird.

Sie sollten die ICU-Bibliothek , die für Unicode reguläre Ausdrücke Unterstützung bereitstellt, die den Unicode-Regeln folgen für Groß- und Kleinschreibung Matching. Die Bibliothek ist als C / C ++ und Java-Bibliotheken zur Verfügung. Viele andere Sprachen wie Python unterstützen einen Wrapper für die ICU-Bibliotheken.

Sie beide Nadel und Heuhaufen umwandeln könnte (oder Großschreibung) in Kleinbuchstaben Sie dann die wcsstr ().

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