Was ist die beste Vorgehensweise bei der Unicode-Verarbeitung in C ++?
Was ist die beste Vorgehensweise bei der Unicode-Verarbeitung in C ++?
Antworten:
is_alpha
denn, dies ist die gewünschte Definition.string
Wenn dir die Korrektheit wichtig ist, benutze dafür immer deine Unicode-Bibliothek.Wenn Sie sich nicht für die Abwärtskompatibilität mit früheren C ++ - Standards interessieren, verfügt der aktuelle C ++ 11-Standard über eine integrierte Unicode-Unterstützung: http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011 /n3242.pdf
Die wirklich beste Vorgehensweise für die Unicode-Verarbeitung in C ++ wäre daher, die integrierten Funktionen dafür zu verwenden. Bei älteren Codebasen ist dies jedoch nicht immer möglich, da der Standard derzeit so neu ist.
BEARBEITEN: Zur Verdeutlichung ist C ++ 11 Unicode-fähig, da es jetzt Unicode-Literale und Unicode-Zeichenfolgen unterstützt. Die Standardbibliothek unterstützt die Verarbeitung und Konvertierung von Unicode jedoch nur eingeschränkt . Für Ihre aktuellen Bedürfnisse kann dies ausreichen. Wenn Sie jedoch gerade eine große Menge an schwerem Heben ausführen müssen, müssen Sie möglicherweise noch etwas wie die Intensivstation für eine eingehendere Verarbeitung verwenden. Derzeit sind einige Vorschläge in Arbeit , die eine robustere Unterstützung für die Textkonvertierung zwischen verschiedenen Codierungen beinhalten sollen. Ich vermute (und hoffe), dass dies Teil des nächsten technischen Berichts sein wird .
Unser Unternehmen (und andere) verwenden die Open-Source- Bibliothek Internation Components for Unicode (ICU), die ursprünglich von Taligent entwickelt wurde.
Es behandelt Zeichenfolgen, Gebietsschemas, Konvertierungen, Datum / Uhrzeit, Sortierung, Transformationen usw. al.
Beginnen Sie mit dem ICU Userguide
Hier ist eine Checkliste für die Windows-Programmierung:
Ansehen Vergleich von Zeichenfolgen ohne Groß- und Kleinschreibung in C ++ an
Diese Frage enthält einen Link zur Microsoft-Dokumentation zu Unicode: http://msdn.microsoft.com/en-us/library/cc194799.aspx
Wenn Sie auf der linken Navigationsseite von MSDN neben diesem Artikel nachsehen, sollten Sie viele Informationen zu Unicode-Funktionen finden. Es ist Teil eines Kapitels zum Thema "Codieren von Zeichen" ( http://msdn.microsoft.com/en-us/library/cc194786.aspx) ).
Es hat die folgenden Unterabschnitte:
Obwohl dies möglicherweise nicht für alle die beste Vorgehensweise ist, können Sie Ihre eigenen C ++ UNICODE-Routinen schreiben, wenn Sie möchten!
Ich habe es gerade über ein Wochenende fertig gemacht. Ich habe viel gelernt, obwohl ich nicht garantiere, dass es 100% fehlerfrei ist, habe ich viele Tests durchgeführt und es scheint richtig zu funktionieren.
Mein Code steht unter der neuen BSD-Lizenz und ist hier zu finden:
http://code.google.com/p/netwidecc/downloads/list
Es heißt WSUCONV und wird mit einem Beispielprogramm main () geliefert, das zwischen UTF-8, UTF-16 und Standard-ASCII konvertiert. Wenn Sie den Hauptcode wegwerfen, haben Sie eine schöne Bibliothek zum Lesen / Schreiben von UNICODE.
Wie oben erwähnt, ist eine Bibliothek die beste Wahl, wenn Sie ein großes System verwenden. Manchmal möchten Sie jedoch die Dinge selbst erledigen (möglicherweise, weil die Bibliothek zu viele Ressourcen wie auf einem Mikrocontroller verwendet). In diesem Fall möchten Sie eine einfache Bibliothek, aus der Sie die Teile für die tatsächlich benötigten Dinge kopieren können.
Der Beispielcode von Willow Schlanger scheint gut zu sein (siehe seine Antwort für weitere Details).
Ich habe auch einen anderen gefunden, der kleineren Code hat, aber keine vollständige Fehlerprüfung hat und nur UTF-8 handhabt, aber einfacher war, Teile herauszunehmen.
Hier ist eine Liste der eingebetteten Bibliotheken, die anständig erscheinen.
Verwenden Sie die internationalen Komponenten von IBM für Unicode
Schauen Sie sich die Empfehlungen von UTF-8 Everywhere an
string
als Binärdaten.