Почему VC ++ 2010 использует буфер символов вместо буфера wchar_t для представления basic_filebuf? - PullRequest
0 голосов
/ 16 ноября 2010

Мне очень и очень странно, что документы VC ++ говорят: (at: 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 (). Чтобы увидеть пример, демонстрирующий это поведение, см. ниже. "

Почему?

1 Ответ

0 голосов
/ 16 ноября 2010

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

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

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

...