我在OS X上使用C ++中的ICU库。我的所有字符串都是UnicodeStrings,但我需要使用系统调用,如fopen,fread等。这些函数将const char *或char *作为参数。我已经读过OS X在内部支持UTF-8,所以我需要做的就是将我的UnicodeString转换为UTF-8,但我不知道如何做到这一点。
UnicodeString有一个toUTF8()成员函数,但它返回一个ByteSink。我也找到了这些例子:http://source.icu-project.org/repos/icu/icu/trunk/source/samples/ucnv/convsamp.cpp并阅读有关使用转换器的内容,但我仍然感到困惑。任何帮助将非常感激。
答案 0 :(得分:7)
调用UnicodeString::extract(...)
解压缩为char *,为转换器传递NULL以获取默认转换器(位于您的操作系统将使用的charset中)。
答案 1 :(得分:3)
这将有效:
std::string utf8;
uStr.toUTF8String(utf8);