Dlaczego szeroki strumień plików w C ++ domyślnie zawęża zapisywane dane?

Szczerze mówiąc, po prostu nie otrzymałem następującej decyzji projektowej w bibliotece C ++ Standard. Podczas zapisywania szerokich znaków w pliku,wofstream konwertujewchar_t wchar postacie:

#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!
}

Wiem, że ma to związek ze standardemcodecvt. Jestcodecvt dlautf8 wBoost. Jest teżcodecvt dlautf16 przezMartin York tutaj na SO. Pytanie brzmiczemu standard codecvt konwertuje szerokie znaki? dlaczego nie napisać postaci takimi, jakimi są!

Poza tym staniemy się prawdziwiunicode streams z C ++ 0x lub czy czegoś tu brakuje?

questionAnswers(5)

yourAnswerToTheQuestion