【问题标题】:Character encoding at stream level [duplicate]流级别的字符编码[重复]
【发布时间】:2013-06-20 06:38:13
【问题描述】:

读了很多关于编码的文章,我终于搞糊涂了!
我将我的困惑总结为两个问题:

  1. stream 级别是否有任何encoding?我的意思是,设置streamencoding 有什么意义吗?还是流完全不知道编码?

  2. 如果streams不知道encoding,那么std::localestd::imbue的主要用途是什么?

【问题讨论】:

标签: c++ string unicode encoding stream


【解决方案1】:
  1. 不,不是。尽管通过std::basic_filebuf<CharT> 执行的所有文件I/O 操作都使用流中包含的语言环境的std::codecvt<CharT, char, std::mbstate_t> facet。

  2. std::basic_ios::imbue 的主要目的是使流以依赖于语言环境的方式格式化内容。例如小数分隔符、千位分隔符等。

【讨论】:

  • 那么默认的std::codecvt 是什么?
  • @MBZ:std::codecvt<char, char, std::mbstate_t> 什么都不做,std::codecvt<wchar_t, char, std::mbstate_t> 在宽字符串和窄字符串之间进行特定于语言环境和编译器的转换。有关wchar_t 的信息,请参阅您的编译器文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 2011-06-21
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多