首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++使用ICU和Nana库-字符串转换?

C++使用ICU和Nana库-字符串转换?
EN

Stack Overflow用户
提问于 2016-07-12 15:06:45
回答 2查看 451关注 0票数 1

我刚在C/C++中与ICU做了一些成功的测试。我需要用不同的编码解析不同的CSV文件(可能是UTF-8,UTF-16 be ),对数据做一些修改,最后将UTF-8的所有内容输出到文件中。所以我选择了重症监护室。字符集检测工作正常,字符处理和转换到UTF-8也很好.

现在,我想将这个库部分集成到一个GUI库Nana中,它可以加载CSV、操作等等。Nana似乎使用std::string和std::wstring。

由于ICU内部将所有数据存储为UTF-16,所以在与ICU一起工作时,我要么获得了UChars,要么获得了UnicodeStrings。但是,我怎么能用它们中的任何一个与娜娜,而不是‘整合’与ICU?是否可以将UChar数组转换为wstring,或将UnicodeString转换为wstring?

在ICU文档中没有找到任何提示,so...maybe其他人已经在做这个工作了吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-13 22:02:30

大多数nana函数期望std::string编码在UTF-8中.

您可以使用接受或返回ICU功能char *来完成对UTF-8的转换。

一些nana函数(如widget::caption )重载了std::wstring,预期它们将被编码为UTF-16 (在windows中)或UTF-32 (在Linux中),它们可以用来向操作系统传递带有本机字符类型和编码的字符串。如果您需要转换,nana提供了nana::charset,它可以管理(显式或隐式)从/到UTF-8/UTF-16/UTF-32的一些最经常需要的转换。

如果你尝试把static_cast<wchar_t *>(some_UChar*)传给娜娜,请告诉我们结果。我不能测试。

关于Unicode治疗的nana文档迫切需要更新。

票数 1
EN

Stack Overflow用户

发布于 2016-07-12 15:53:36

根据ICU文档,UChar数组是一个16位宽字符的数组.意味着公共实现中的wchar_t数组。这意味着,如果您的系统中有16位宽的wchar_t,您可以安全地将getTerminatedBuffer()函数的结果转换为const wchar_t *,或者将其直接用作C宽字符字符串,或者使用它构建std::wstring

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38332690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档