BTo*_*TKD 5 c++ string com mfc widestring
我正在现代化一个大型的传统MFC代码库,其中包含一个名副其实的字符串类型:
我想在内部标准化单个字符串类型,并且只有在第三方API(即COM或MFC函数)绝对需要时才转换为其他类型.我的同事和我正在辩论的问题; 我们应该标准化哪种字符串类型?
我更喜欢C++标准字符串之一:std :: string或std :: wstring.我个人倾向于std :: string,因为我们不需要宽字符 - 它是一个内部代码库,没有面向客户的UI(即不需要多语言支持)."普通"字符串允许我们使用简单,朴素的字符串文字("Hello world"vs L"Hello world"或_T("Hello world")).
编程社区是否有官方立场?当面对多种字符串类型时,通常用作标准的"内部"存储格式?
如果我们谈论Windows,那么我会使用std :: wstring(因为我们经常需要很酷的字符串功能),或者如果只是传递字符串,则使用wchar_t*.
注意Microsoft建议在此处:使用字符串
Windows本身支持UI元素,文件名等的Unicode字符串.Unicode是首选的字符编码,因为它支持所有字符集和语言.Windows表示使用UTF-16编码的Unicode字符,其中每个字符都编码为16位值.UTF-16字符称为宽字符,以区别于8位ANSI字符.Visual C++编译器支持宽字符的内置数据类型wchar_t
也:
当Microsoft向Windows引入Unicode支持时,它通过提供两组并行的API来简化转换,一组用于ANSI字符串,另一组用于Unicode字符串.[...]在内部,ANSI版本将字符串转换为Unicode.
也:
新应用程序应始终调用Unicode版本.许多世界语言都需要Unicode.如果使用ANSI字符串,则无法本地化您的应用程序.ANSI版本的效率也较低,因为操作系统必须在运行时将ANSI字符串转换为Unicode.[...] Windows中的大多数新API只有一个Unicode版本,没有相应的ANSI版本.
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |