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()方法设置它。要查看演示此行为的示例,请参阅下文。“
为什么?
答案 0 :(得分:0)
这只是一个猜测,但它可能是这种方式来处理常见的情况(至少在Windows上),其中程序的内部是wchar_t(16位Unicode字符),但它输出的大多数/所有文本文件是8位ANSI。
大多数文本文件似乎仍然是ANSI,除非它们确实需要,否则许多程序无法正确处理Unicode文本文件。
我想知道它是真的一个ANSI字符串或UTF-8字符串,它转换为......