【发布时间】:2016-09-20 12:45:27
【问题描述】:
简单任务:我想读取一个非 ascii 文件名的文件。
在 linux 和 MacOS 上,我只是将文件名作为 UTF-8 编码字符串传递给 fstream 构造函数。在 Windows 上,这会失败。
我从this question 了解到,Windows 根本不支持 utf-8 文件名。但是,它提供了一个自己的非标准 open 方法,该方法采用 utf-16 wchar_t*。因此,我可以简单地将我的 string 转换为 utf-16 wstring 就可以了。但是在MinGW标准库中,fstream的那个wchar_t* open方法根本就不存在。
那么,如何在 MinGW 上打开非 ASCII 文件名?
【问题讨论】:
-
@owacoder:我无法在 MinGW 上读取非 ascii 文件?那会很有趣。那将是一个超级严格的限制,基本上使 MinGW 对于名称中的非 ascii 字符很常见的国家(基本上超过地球上所有国家的一半)毫无用处。因此,必须有一种方法。
-
我的意思是直接使用 fstream。使用其他方法肯定有很多解决方法(当然是直接特定于系统的调用)。
标签: c++ windows unicode mingw fstream