windows - 如何以跨平台友好的方式处理 C/C++ 中的 Unicode 字符串?

标签 windows string unicode cross-platform tchar

在不同于 Windows 的平台上,您可以轻松地使用 char * 字符串并将它们视为 UTF-8。

问题在于,在 Windows 上,您需要使用 wchar* 字符串 (W) 来接受和发送消息。如果您将使用 ANSI 函数 (A),您将不支持 Unicode。

因此,如果您想编写真正可移植的应用程序,您需要在 Windows 上将其编译为 Unicode。

现在,为了保持代码整洁,我想看看推荐的处理字符串的方法是什么,一种可以最大限度地减少代码丑陋的方法。

您可能需要的字符串类型:std::stringstd::wstringstd::tstringchar *,wchat_t *,TCHAR*,CString (ATL one).

您可能遇到的问题:

  • cout/cerr/cin 及其 Unicode 变体 wcout,wcerr,wcin
  • 所有重命名的宽字符串函数及其 TCHAR 宏 - 如 strcmpwcscmp_tcscmp
  • 代码中的常量字符串,对于 TCHAR,您必须使用 _T() 宏来填充您的代码。

您认为哪种方法最好?(欢迎提供示例)

就我个人而言,我会选择 std::tstring 方法,但我想看看如何在必要时进行转换。

最佳答案

我只能建议你去看看这个图书馆:http://cppcms.sourceforge.net/boost_locale/docs/
它可能会有所帮助,它目前是一个提升候选者,但我相信它会成功。

关于windows - 如何以跨平台友好的方式处理 C/C++ 中的 Unicode 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2722951/

相关文章:

c - C语言中如何分配子字符串?

node.js - 如何从Windows命令行将参数传递给node.js

windows - 在 Windows 上使用 python3 忽略 PYTHONPATH

string - 让 Lua 中的数字更容易阅读

python - 编码期间出现 UnicodeDecodeError?

c# - 使用 SendInput 发送 U+FFFF 之外的 unicode 字符

c++ - 在 VS 调试器中显示 UTF-16 字符串

windows - Google 云端硬盘即服务或后台操作

c - 如何从标准输入正确写入非ascii文件

c# - 从文本名称实例化一个类