1

可能重复:
使用非 MSVC 编译器在 Windows 下使用具有 Unicode 文件名的文件打开 fstream

我一直在尝试找到一种简单的方法来使用 GCC 在 Windows 中打开文件名中包含非 ASCII 字符的文件。Microsoft 的 STL 为类提供wstring重载fstream,但标准 C++ 没有,因为 `wchar_t´ 没有很好地定义。

我正在寻找一种在标准 C++ 和 Win32 API 中fstream给定文件名时打开 a 的方法。std::wstring

不想创建自己的带有 astd::wstring并模仿的 streambuf 子类fstream。我确实需要模仿fstream::open(const std::wstring &)(或任何它被声明为的)函数,所以我可以毫不费力地打开奇怪命名的文件。

我已经考虑过使用短 DOS 8.3 文件名,但 GetShortPathName 采用并输出宽字符串,无法用于 STL 构造函数/打开函数。我确实有方法可以转换为不同的代码页,所以也许将宽字符串转换为本地代码页会给出正确的 8 位字符串,允许我打开fstream?

4

0 回答 0