在不同于 Windows 的平台上,您可以轻松地使用 char *
字符串并将它们视为 UTF-8。
问题在于,在 Windows 上,您需要使用 wchar* 字符串 (W) 来接受和发送消息。如果您将使用 ANSI 函数 (A),您将不支持 Unicode。
因此,如果您想编写真正可移植的应用程序,您需要在 Windows 上将其编译为 Unicode。
现在,为了保持代码整洁,我想看看推荐的处理字符串的方法是什么,一种可以最大限度地减少代码丑陋的方法。
您可能需要的字符串类型:std::string
、std::wstring
、std::tstring
、char *
,wchat_t *
,TCHAR*
,CString
(ATL one).
您可能遇到的问题:
cout/cerr/cin
及其 Unicode 变体wcout,wcerr,wcin
- 所有重命名的宽字符串函数及其 TCHAR 宏 - 如
strcmp
、wcscmp
和_tcscmp
。 - 代码中的常量字符串,对于 TCHAR,您必须使用
_T()
宏来填充您的代码。
您认为哪种方法最好?(欢迎提供示例)
就我个人而言,我会选择 std::tstring
方法,但我想看看如何在必要时进行转换。
最佳答案
我只能建议你去看看这个图书馆:http://cppcms.sourceforge.net/boost_locale/docs/
它可能会有所帮助,它目前是一个提升候选者,但我相信它会成功。
关于windows - 如何以跨平台友好的方式处理 C/C++ 中的 Unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722951/