【问题标题】:ustring - an inplace replacement of std::string/std::wstring?ustring - std::string/std::wstring 的就地替换?
【发布时间】:2011-12-06 13:46:43
【问题描述】:

C++ and UTF8 - Why not just replace ASCII? 的延续

为什么没有std::ustring 可以在新应用程序中同时替换std::stringstd::wstring

当然在标准库中有相应的支持。与boost::filesystem3::path 不关心字符串表示并与std::stringstd::wstring 一起工作的方式类似。

【问题讨论】:

    标签: c++ string unicode


    【解决方案1】:

    你为什么要替换任何东西?

    stringwstring 是对应于charwchar_t 的字符串类,在与环境接口的上下文中,它们分别用于携带编码为“系统的窄多字节表示”的数据”和“系统编码”中的固定宽度。

    另一方面,u8/u/U,以及char16_tchar32_t,以及相应的字符串类,用于存储编码为UTF-8/16/32。

    后者是与前者不同的问题域。该标准不包含桥接两个域的机制(并且通常需要诸如 iconv() 之类的库来使此桥具有可移植性,例如通过转码 WCHAR_T/UTF-32)。

    这是我的标准相关问题列表:#1#2#3

    【讨论】:

      【解决方案2】:

      std::u16stringstd::u32string。您可能想要使用这些的标准库,例如命名要使用 fstream 打开的文件,不会更改为使用这些,因为它们确实不能。例如,某些平台采用几乎任意字节字符串来命名要打开的文件,而没有指定编码。必须通过具有特定编码的字符串运行它会破坏事情并且不兼容。

      【讨论】:

      • 这些仅在C++11/C++0x 中可用,并非所有编译器或操作系统都完全支持。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2011-04-06
      • 2012-11-12
      • 2011-09-11
      • 1970-01-01
      • 2011-11-01
      相关资源
      最近更新 更多