Por que o fluxo de arquivo amplo em C ++ restringe os dados gravados por padrão?
Honestamente, eu simplesmente não obtenho a seguinte decisão de projeto na biblioteca C ++ Standard. Ao escrever caracteres largos em um arquivo, owofstream
convertewchar_t
para dentrochar
personagens:
#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!
}
Estou ciente de que isso tem a ver com o padrãocodecvt
. Há simcodecvt
parautf8
emBoost
. Além disso, existecodecvt
parautf16
porMartin York aqui em SO. A questão éporque astandard codecvt
converte caracteres largos? Por que não escrever os personagens como eles são!
Além disso, vamos nos tornar reaisunicode streams
com C ++ 0x ou estou faltando alguma coisa aqui?