Warum schränkt ein breiter Dateistream in C ++ geschriebene Daten standardmäßig ein?

Ehrlich gesagt bekomme ich die folgende Designentscheidung in der C ++ Standard-Bibliothek einfach nicht. Beim Schreiben breiter Zeichen in eine Datei wird diewofstream konvertiertwchar_t inchar Zeichen:

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

Mir ist bewusst, dass dies mit dem Standard zu tun hatcodecvt. Es gibtcodecvt zumutf8 imBoost. Auch gibt es einecodecvt zumutf16 durchMartin York hier auf SO. Die Frage istWarum dasstandard codecvt konvertiert Wide-Zeichen? Warum nicht die Zeichen so schreiben, wie sie sind?

Werden wir auch real werden?unicode streams mit C ++ 0x oder fehle ich hier etwas?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage