【发布时间】:2013-01-04 22:44:18
【问题描述】:
可能重复:
How to open an std::fstream (ofstream or ifstream) with a unicode filename?
我有一个 UTF-16 编码的字符串,我想创建一个文件,其中文件的名称就是这个字符串。
UTF-16LE 字符串看起来像:
首先我想确保系统正确地看到和显示这个名字。
我试试:
char *output=some address (points to memory where line is held)
ofstream out(output);
out.close();
在输出时我没有得到正确的名称。
它看起来像:
为了创建突出显示的文件,我附加了 UTF-16LE 标记,未突出显示的文件是仅使用原始 UTF-16 行创建的 - 没有一种方法有效。
是否有一些方法可以在 Windows 中仅使用 C++ 功能而不使用 WinApi (CreateFilew) 创建具有 UTF-16LE 名称的文件?
我的编译器是 MinGW 4.0.4,Windows XP(但我希望它可以在所有 Windows 上运行)
提前感谢您的任何提示!
【问题讨论】:
-
我相信 Windows 在文件系统上使用 UTF-8,因此您可能需要将字符串转换为 UTF-8。
-
他们建议对 msdn.microsoft.com/en-us/library/windows/desktop/… 的所有内容使用 UTF-16,如果我没记错的话
-
Carl Norum,我不能从那里使用解决方案,因为事先不知道字符串 i.imgur.com/zTtL8.png 。我不能将我的行声明为 wchar_t line[],大小可以是任意的
-
...
wstring str = [...]; std::fstream file(str.data());...
标签: c++ windows utf-16 ofstream