为什么VC ++ 2010使用char缓冲区而不是wchar_t buffer来表示basic_filebuf <wchar_t>?</wchar_t>

时间:2010-11-16 12:10:55

标签: visual-c++ fstream

VC ++文档说:( at: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()方法设置它。要查看演示此行为的示例,请参阅下文。“

为什么?

1 个答案:

答案 0 :(得分:0)

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

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

我想知道它是真的一个ANSI字符串或UTF-8字符串,它转换为......