Честно говоря, я просто не получаю следующее дизайнерское решение в стандартной библиотеке С++. При написании больших символов в файл wofstream
преобразует wchar_t
в символы char
:
#include <fstream>
#include <string>
int main()
{
using namespace std;
wstring someString = L"Hello StackOverflow!";
wofstream file(L"Test.txt");
file << someString; // the output file will consist of ASCII characters!
}
Я знаю, что это связано со стандартом codecvt
. Для utf8
существует codecvt
в Boost
. Кроме того, существует codecvt
для utf16
от Мартина Йорка здесь, на SO. Вопрос в том, почему standard codecvt
преобразует широкие символы? почему бы не написать символы, как они есть!
Кроме того, мы собираемся получить реальный unicode streams
с С++ 0x или я что-то пропустил здесь?