【发布时间】:2011-06-23 12:37:37
【问题描述】:
我可以为 unicode 文件名生成 8.3 文件名并使用 char 的 ASCII 字符串在 Windows 中打开 fstream 吗?
我知道 MSVC++ 为 fstream 提供了一个 wchar_t* 重载,但 GCC 的 libstdc++ 没有提供这个 :(,所以我需要一个替代方案。我不想为此创建自己的 streambuf 类,因为好像有点矫枉过正。
【问题讨论】:
-
它不会重载,它有 std::wfstream 类。这是标准 C++ 库的一部分。当然你可以找到一个实现它的crt。
-
@Hans:wfstream是一个data以
wchar_t为单位的流,但是你确定它可以通过wchar_t*打开文件吗? -
@Hans:我想要一个
fstream,因为文件是UTF-8,我不想从中提取wchar_ts。但是文件名当然可以包含非 ASCII 字符。 -
@Hans: 和
std::wfstream打开char*文件名,而不是wchar_t*... -
8.3 文件名仅适用于旧版应用程序,可以禁用。永远不要使用它们。如果您必须使用 GCC,您可能别无选择,只能跳过整个标准库并直接使用 Windows API(
CreateFileW等)。
标签: c++ windows unicode fstream