相关疑难解决方法(0)

C++ 0x中是否有任何本地化支持的更新?

我使用C++语言环境方面的工作越多,我理解的就越多 - 它们就被打破了.

  • std::time_get- 与std::time_put(因为它在C strftime/strptime中)不对称,并且不允许使用AM/PM标记轻松解析时间.
  • 发现最近,简单的数字格式可能产生在一定的语言环境(如非法UTF-8 ru_RU.UTF-8).
  • std::ctype 假设可以在每个字符的基础上完成上/下更新(情况转换可能会改变字符数并且它取决于上下文),这是非常简单的.
  • std::collate - 不支持校对强度(区分大小写或不区分大小写).
  • 在时间格式化中无法指定与全局时区不同的时区.

以及更多...

  • 有人知道C++ 0x中的标准方面是否有任何变化?
  • 有没有办法让这种变化变得重要?

谢谢.

编辑:澄清链接无法访问:

std::numpunct将千位分隔符定义为char.因此,当U + 2002中的分隔符 - 不同类型的空间时,它不能作为单个字符在UTF-8中再现,而是作为多字节序列.

在C API中,struct lconv将千位分隔符定义为字符串,并且不会遇到此问题.因此,当您尝试使用UTF-8语言环境在ASCII之外的分隔符格式化数字时,会生成无效的UTF-8.

要重现此错误,请使用imbued ru_RU.UTF-8locale 将1234写入std:ostream

EDIT2:我必须承认POSIX C本地化API工作得更顺畅:

  • 有strftime的反转 - strptime(strftime也一样std::time_put::put)
  • 由于上面提到的问题,数字格式没有问题.

然而,它仍然是完美的.

编辑3:根据有关C++ 0x的最新说明,我可以看到std::time_get::get- 与...类似strptime和相反std::time_put::put.

c++ locale localization internationalization c++11

11
推荐指数
1
解决办法
745
查看次数

标签 统计

c++ ×1

c++11 ×1

internationalization ×1

locale ×1

localization ×1