Честно говоря, я просто не получаю следующее дизайнерское решение в стандартной библиотеке С++. При написании больших символов в файл 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 или я что-то пропустил здесь?