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?