Почему VC++ 2010 использует буфер char, а не буфер wchar_t для представления basic_filebuf‹wchar_t›?

Мне очень-очень странно, что в документах VC++ говорится: (по адресу: http://msdn.microsoft.com/en-us/library/tzf8k3z8(VS.90).aspx)

"Объекты типа basic_filebuf создаются с внутренним буфером типа char * независимо от типа char_type, указанного параметром типа Elem. Это означает, что строка Unicode (содержащая символы wchar_t) будет преобразована в строку ANSI (содержащую символы char) перед он записывается во внутренний буфер. Чтобы хранить строки Unicode в буфере, создайте новый буфер типа wchar_t и установите его с помощью метода basic_streambuf::pubsetbuf(). Пример, демонстрирующий такое поведение, см. ниже».

Почему?


person xmllmx    schedule 16.11.2010    source источник


Ответы (1)


Это всего лишь предположение, но это может быть способ справиться с распространенным случаем (по крайней мере, в Windows), когда внутренние компоненты программы являются wchar_t (16-битные символы Unicode), но большинство/все текстовые файлы, которые она выводит, являются 8-битными ANSI.

Большинство текстовых файлов по-прежнему кажутся стандартом ANSI, если это действительно не требуется, и многие программы не могут правильно работать с текстовыми файлами Unicode.

Интересно, это действительно строка ANSI или строка UTF-8, которую он преобразует в...

person Leo Davidson    schedule 16.11.2010