在不同于 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
方法,但我想看看如何在必要的地方进行转换。