在C ++项目,我想打开一个文件( fstream::open()
这似乎是一个大问题)。 我的程序的使用Windows构建悲惨失败。
文件 “A”(UTF-8 0xC3 0xA4)
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
字符串
s
是UTF-8编码的,但随后从UTF-8转化为Latin1的(0xE4)。 我使用Qt,这样QString::fromUtf8(s.c_str()).toLocal8Bit().constData()
我为什么可以打开文件进行读取,但不能写?
文件 “и”(UTF-8 0xD0 0xB8)
同样的代码,并没有在所有的工作。
看来,这种性格不适合在Windows-1252字符集。 我怎样才能打开这样的fstream的(我不使用MSVC,所以没fstream::open(const wchar_t*, ios_base::openmode)