fstream :: open () Unicode- oder Nicht-ASCII-Zeichen funktionieren unter Windows nicht (mit std :: ios :: out)

In einem C ++ - Projekt möchte ich eine Datei öffnen (fstream::open()) (was ein großes Problem zu sein scheint). Der Windows-Build meines Programms schlägt kläglich fehl.

Datei "ä" (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>

Die Saites wird UTF-8-codiert, dann aber von UTF-8 nach Latin1 (0xE4) konvertiert. Ich benutze also QtQString::fromUtf8(s.c_str()).toLocal8Bit().constData().

Warum kann ich die Datei zum Lesen öffnen, aber nicht zum Schreiben?

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

Gleicher Code, funktioniert überhaupt nicht.

Es scheint, dass dieses Zeichen nicht in den Windows-1252-Zeichensatz passt. Wie kann ich einen solchen Fstream öffnen (ich verwende MSVC also nicht)?Neinfstream::open(const wchar_t*, ios_base::openmode))?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage