【发布时间】:2011-02-12 22:57:38
【问题描述】:
在不同于 Windows 的平台上,您可以轻松地使用 char * 字符串并将它们视为 UTF-8。
问题在于,在 Windows 上,您需要使用 wchar* 字符串 (W) 接受和发送消息。如果您使用 ANSI 函数 (A),您将不支持 Unicode。
因此,如果您想编写真正可移植的应用程序,您需要在 Windows 上将其编译为 Unicode。
现在,为了保持代码干净,我想看看推荐的处理字符串的方法是什么,一种最大限度地减少代码丑陋的方法。
您可能需要的字符串类型:std::string、std::wstring、std::tstring、char *、wchat_t *、TCHAR*、CString(ATL 之一)。
您可能遇到的问题:
-
cout/cerr/cin及其 Unicode 变体wcout,wcerr,wcin - 所有重命名的宽字符串函数及其 TCHAR 宏 - 例如
strcmp、wcscmp和_tcscmp。 - 代码中的常量字符串,使用 TCHAR,您必须使用
_T()宏填充代码。
您认为哪种方法最好?(欢迎举例)
我个人会选择std::tstring 方法,但我想看看在必要时如何处理转换。
【问题讨论】:
-
utf8everywhere.org 解释了一切。
标签: windows string unicode cross-platform tchar