当前位置:  开发笔记 > 编程语言 > 正文

C++中的Unicode处理

如何解决《C++中的Unicode处理》经验,为你挑选了4个好方法。

在C++中进行Unicode处理的最佳实践是什么?



1> hazzen..:

使用 ICU处理您的数据(或类似的库)

在您自己的数据存储中,确保所有内容都以相同的编码存储

确保你总是使用你的unicode库来完成普通的任务,比如字符串长度,大写状态等.is_alpha除非你想要的定义,否则永远不要使用标准库内置.

我不能说够了:如果你关心正确性,永远不要迭代a的索引string,总是使用你的unicode库.



2> eestrada..:

如果您不关心与以前的C++标准的向后兼容性,那么当前的C++ 11标准内置了Unicode支持:http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011 /n3242.pdf

因此,在C++中进行Unicode处理的真正最佳实践是使用内置工具.然而,对于较旧的代码库,这并不总是可能的,目前标准是如此新颖.

编辑:为了澄清,C++ 11是Unicode识别的,因为它现在支持Unicode文字和Unicode字符串.但是,标准库对Unicode处理和转换的支持有限.对于您目前的需求,这可能就足够了.但是,如果您现在需要进行大量繁重的工作,那么您可能仍需要使用ICU之类的东西进行更深入的处理.有一些建议,目前的作品,包括针对不同编码之间进行文本转换更强大的支持.我的猜测(和希望)是这将成为下一份技术报告的一部分.



3> jschroedl..:

我们公司(和其他公司)使用最初由Taligent开发的开源国际组件(ICU)库.

它处理字符串,区域设置,转换,日期/时间,整理,转换等.人.

从ICU用户指南开始



4> Adam Pierce..:

这是Windows编程的清单:

_T(“ my string”)中包含的所有字符串

strlen()等函数已被_tcslen()等替换。

使用LPTSTR和LPCTSTR代替char *和const char *

在Dev Studio中启动新项目时,请务必确保在项目属性中选择了Unicode选项。

对于C ++字符串,请使用std :: wstring代替std :: string


除非打算同时进行Unicode和ANSI构建,否则不要使用“ T”字符串,字符和函数。如果只打算进行Unicode构建,则只需进行常规的宽字符处理即可:L“我的宽字符串” wcslen(L“我的字符串”)等
老实说,我认为UTF16是浪费,将UTF8中的所有编码都简化了,并且与* nix更加兼容。
推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有