可能重复:
Opening fstream with file with Unicode file name under Windows using non-MSVC compilerMSVC的STL如何用宽字符串文件名打开fstream?
我一直在试图找到一个简单方式在Windows中打开与非ASCII字符的文件在其文件名与海湾合作委员会。微软的STL为fstream
类提供了wstring
重载,但是标准C++没有,因为`wchar_t'没有很好的定义。
我正在寻找一种方法来打开一个fstream
,当给定std::wstring
为文件名,在标准的C + +和Win32 API。
我做不是想创建我自己的streambuf子类,需要std::wstring
和模仿fstream
。我做需要模仿fstream::open(const std::wstring &)
(或任何它声明)功能,所以我可以打开奇怪的命名文件没有一个困难。
我已经想到使用短的DOS 8.3文件名,但GetShortPathName接受并输出宽字符串,不适用于STL构造函数/打开函数。我确实有方法转换为不同的代码页,所以也许将宽字符串转换为本地代码页会给出正确的8位字符串,允许我打开fstream
?
@raj:哦,是的,我忘了提,Boost,它可能对我来说有点太侵扰了。我需要一个结合了Win32 API的'std :: fstream + std :: wstring'。 MSVC STL做到这一点,我只是不知道如何:( – rubenvb
您是否尝试过使用WideCharToMultiByte并将结果传递给gcc fstream :: open?只有当wstring可以在当前本地代码页中正确表达 –
@raj :如果当前的本地代码页不能代表文件名,那么文件名会在资源管理器中看起来如何?或者,如果用'dir'命令打印出来,你会如何告诉'delete'删除文件?你不需要做通过一些本地代码页,我发现这令人沮丧,它似乎是可能的,但似乎没有人知道如何。 – rubenvb