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::UnicodeString
fromUTF8(const StringPiece &utf8)
ytoUTF8String(StringClass &result)
. También haytoUTF8(ByteSink &sink)
.
Y extract()
no se prefiere ahora.
Nota:
icu::UnicodeString
tiene 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.