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?