c++ - 使用非 MSVC 编译器在 Windows 下打开带有 Unicode 文件名的文件的 fstream

标签 c++ windows gcc unicode wide-api

当文件名为“Unicode”文件名时,我需要将文件打开为 std::fstream(或实际上任何其他 std::ostream)。

在 MSVC 下我有非标准扩展std::fstream::open(wchar_t const *,...)?我可以使用 GCC(最重要的)和 Borland 编译器等其他编译器做什么。

我知道 CRTL 提供了 _wfopen 但它提供了 C FILE * 接口(interface)而不是 io-streams,也许有一种非标准的方式来创建 io-stream 文件*?是否有任何 boost::ifstream 带有类似 MSVC 的 Windows 扩展?

最佳答案

不幸的是,没有标准的方法可以做到这一点,尽管 C++0x(1x?) promise 这样做。在那之前,您正确地假设可以在 Boost 中找到解决方案,但是,您要搜索的库是 Boost.Filesystem .

Boost.Filesystem 内部默认使用宽字符串作为其通用路径系统,因此在这方面不存在 unicode 问题。

关于c++ - 使用非 MSVC 编译器在 Windows 下打开带有 Unicode 文件名的文件的 fstream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478986/

相关文章:

c++ - 如何编写目标为 "errors"的 makefile ?

c++ - 如何检查 configure.ac 中的特定 gcc 功能

c++ - OpenGL - 更新模型信息(例如模型矩阵)的最有效方法

c++ - 如何在 Visual Studio 中设置 MPI 中的进程数?

windows exe 到 linux exe

c++ - 两个 Windows 应用程序可以使用命令行进行通信吗?

c - 强制/说服/欺骗 GCC 展开 _Longer_ 循环?

c++ - 将字符串中的反斜杠替换为正斜杠(std::replace 在 Windows 上有效,但在 Linux 上无效)

c++ - 从 C++ 中的函数更改数组

windows - 包含 winuser.h 时出错。它将 ChangeMenu 定义为 ChangeMenuW 或 ChangeMenuA