UnicodeString zu char * (UTF-8)

8

Ich verwende die ICU-Bibliothek in C ++ unter OS X. Alle meine Zeichenfolgen sind UnicodeStrings, aber ich muss Systemaufrufe wie fopen, fread und so weiter verwenden. Diese Funktionen nehmen const char * oder char * als Argumente an. Ich habe gelesen, dass OS X UTF-8 intern unterstützt, so dass ich nur meinen UnicodeString in UTF-8 konvertieren muss, aber ich weiß nicht, wie ich das machen soll.

UnicodeString hat eine toUTF8 () -Memberfunktion, aber es gibt einen ByteSink zurück. Ich habe auch diese Beispiele gefunden: Ссылка und lese über die Verwendung eines Konverters, aber ich bin immer noch verwirrt. Jede Hilfe würde sehr geschätzt werden.

    
zfedsa 30.06.2010, 15:09
quelle

3 Antworten

7

Rufen Sie UnicodeString::extract(...) auf, um in ein char * zu extrahieren, übergeben Sie NULL für den Konverter, um den Standardkonverter zu erhalten (der in dem Zeichensatz ist, den Ihr Betriebssystem verwendet).

    
Steven R. Loomis 30.06.2010, 17:31
quelle
4

ICU-Benutzerhandbuch & gt; UTF-8 bietet Methoden und Beschreibungen dazu.

  

Der einfachste Weg, um UTF-8-Zeichenfolgen in UTF-16-APIs zu verwenden, ist über die C ++% -Methode icu::UnicodeString und fromUTF8(const StringPiece &utf8) . Es gibt auch toUTF8String(StringClass &result) .

Und toUTF8(ByteSink &sink) wird jetzt nicht bevorzugt.

  

Hinweis: extract() hat Konstruktoren, icu::UnicodeString und setTo() Methoden, die entweder ein Konverterobjekt oder einen Zeichensatznamen verwenden. Diese können für UTF-8 verwendet werden, sind aber nicht so effizient oder praktisch wie die oben genannten Methoden extract() / fromUTF8() / toUTF8() .

    
Map X 06.04.2014 05:58
quelle
3

Das wird funktionieren:

%Vor%     
gsf 23.10.2013 23:54
quelle