fstream :: open () Caracteres Unicode ou Não Ascii não funcionam (com std :: ios :: out) no Windows

Em um projeto C ++, quero abrir um arquivo (fstream::open()) (o que parece ser um grande problema). A compilação do Windows do meu programa falha miseravelmente.

Arquivo "ä" (UTF-8 0xC3 0xA4)

<code>std::string s = ...;
//Convert s
std::fstream f;
f.open(s.c_str(), std::ios::binary | std::ios::in); //Works (f.is_open() == true)
f.close();
f.open(s.c_str(), std::ios::binary | std::ios::in | std::ios::out); //Doesn't work
</code>

A cordas é codificado em UTF-8, mas depois convertido de UTF-8 para Latin1 (0xE4). Estou usando o Qt, entãoQString::fromUtf8(s.c_str()).toLocal8Bit().constData().

Por que eu posso abrir o arquivo para leitura, mas não para escrever?

Arquivo "è" (UTF-8 0xD0 0xB8)

O mesmo código, não funciona de todo.

Parece que esse caractere não se encaixa no conjunto de caracteres do Windows-1252. Como posso abrir um tal fstream (eu não estou usando o MSVC, entãonãofstream::open(const wchar_t*, ios_base::openmode))

questionAnswers(2)

yourAnswerToTheQuestion