【问题标题】:What is the Linux equivalent of: MultiByteToWideChar & WideCharToMultiByte?什么是 Linux 等价物:MultiByteToWideChar 和 WideCharToMultiByte?
【发布时间】:2011-03-17 15:52:54
【问题描述】:

我正在使用一个包装 std::wstring 的类,此代码需要跨平台,是否有 Windows 函数的等价物:Linux 上的 MultiByteToWideChar 和 WideCharToMultiByte?

谢谢。

【问题讨论】:

  • 请记住,在 GNU/Linux 上,std::wstring 是 Windows 上 std::wstring 大小的两倍。
  • 这里有 C99 函数 mbtowc 和 wctomb
  • @Johannes Schaub: mbtowc 和 wctomb 实际上是在 1995 年的规范性修正案 1 中添加的。

标签: c++ windows linux unicode stdstring


【解决方案1】:

Linux 等价物是iconv 函数iconv_open、iconv 和iconv_close(例如man 3 iconv_open 等文档)。对于跨平台应用程序,请改用ICU 等专用库。这样的库已经包含了它们自己的字符串类;无需包装std::wstring。

【讨论】:

    【解决方案2】:

    mbtowc 和wctomb 是最直接的等价物,但请注意,它们操作的是与当前LC_CTYPE 语言环境对应的多字节字符集(可以使用setlocale() 更改)。

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2011-11-20
      • 2011-08-25
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      相关资源
      最近更新 更多