【问题标题】:How come VC++ 2010 uses char buffer rather than wchar_t buffer to represent basic_filebuf<wchar_t>?VC++ 2010 为何使用 char 缓冲区而不是 wchar_t 缓冲区来表示 basic_filebuf<wchar_t>?
【发布时间】:2010-11-16 12:10:55
【问题描述】:

VC++ 文档说:(http://msdn.microsoft.com/en-us/library/tzf8k3z8(VS.90).aspx)对我来说非常奇怪

"basic_filebuf 类型的对象是使用 char * 类型的内部缓冲区创建的,而不管类型参数 Elem 指定的 char_type。这意味着 Unicode 字符串(包含 wchar_t 字符)将转换为 ANSI 字符串(包含 char字符)在写入内部缓冲区之前。要在缓冲区中存储 Unicode 字符串,请创建一个 wchar_t 类型的新缓冲区并使用 basic_streambuf::pubsetbuf() 方法设置它。要查看演示此行为的示例,请参见下文。”

为什么?

【问题讨论】:

    标签: visual-c++ fstream


    【解决方案1】:

    这只是一个猜测,但它可能是处理常见情况(至少在 Windows 上)的方式,其中程序的内部是 wchar_t(16 位 Unicode 字符)但它输出的大多数/所有文本文件都是 8 位ANSI。

    除非确实需要,否则大多数文本文件似乎仍然是 ANSI,而且许多程序无法正确处理 Unicode 文本文件。

    我想知道它是真的它转换成的ANSI字符串还是UTF-8字符串......

    【讨论】:

      猜你喜欢
      • 2012-05-27
      • 2011-08-14
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      相关资源
      最近更新 更多