c++ - UnicodeString a char*(UTF-8)
windows internationalization (3)
Estoy usando la biblioteca de ICU en C ++ en OS X. Todas mis cadenas son UnicodeStrings, pero necesito usar llamadas al sistema como fopen, fread, etc. Estas funciones toman const char * o char * como argumentos. He leído que OS X es compatible con UTF-8 internamente, por lo que todo lo que tengo que hacer es convertir Mi UnicodeString a UTF-8, pero no sé cómo hacerlo.
UnicodeString tiene una función de miembro toUTF8 (), pero devuelve un ByteSink. También encontré estos ejemplos: http://source.icu-project.org/repos/icu/icu/trunk/source/samples/ucnv/convsamp.cpp y leí sobre el uso de un convertidor, pero todavía estoy confundido . Cualquier ayuda sería muy apreciada.
llame a UnicodeString::extract(...) para extraer en un char *, pase NULL para que el convertidor obtenga el convertidor predeterminado (que está en el juego de caracteres que usará su sistema operativo).
Esto funcionará:
std::string utf8;
uStr.toUTF8String(utf8);
Guía del usuario de la UCI> UTF-8 proporciona métodos y descripciones de cómo hacerlo.
La forma más sencilla de usar cadenas UTF-8 en las API UTF-16 es mediante los métodos C ++
icu::UnicodeStringfromUTF8(const StringPiece &utf8)ytoUTF8String(StringClass &result). También haytoUTF8(ByteSink &sink).
Y extract() no se prefiere ahora.
Nota:
icu::UnicodeStringtiene constructores,setTo()yextract()que toman un objeto convertidor o un nombre de juego de caracteres. Estos pueden usarse para UTF-8, pero no son tan eficientes ni convenientes como losfromUTF8()/toUTF8()/toUTF8String()mencionados anteriormente.