fstream :: open () Znaki Unicode lub Non-Ascii nie działają (z std :: ios :: out) w systemie Windows

W projekcie C ++ chcę otworzyć plik (fstream::open()) (co wydaje się poważnym problemem). Kompilacja mojego programu w systemie Windows kończy się niepowodzeniem.

Plik „ä” (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>

Ciągs jest kodowany w UTF-8, ale następnie konwertowany z UTF-8 na Latin1 (0xE4). Używam Qt, więcQString::fromUtf8(s.c_str()).toLocal8Bit().constData().

Dlaczego mogę otworzyć plik do czytania, ale nie do pisania?

Plik „и” (UTF-8 0xD0 0xB8)

Ten sam kod w ogóle nie działa.

Wygląda na to, że ta postać nie pasuje do zestawu znaków Windows-1252. Jak mogę otworzyć taki strumień (nie używam MSVC, więcNiefstream::open(const wchar_t*, ios_base::openmode))?

questionAnswers(2)

yourAnswerToTheQuestion