0

可能重复:
如何使用 unicode 文件名打开 std::fstream(ofstream 或 ifstream)?

我有一个以 UTF-16 编码的字符串,我想创建一个文件,其中文件的名称就是这个字符串。

UTF-16LE 字符串如下所示:

在此处输入图像描述

首先,我想确保系统正确地看到并显示这个名称。

我尝试:

char *output=some address (points to memory where line is held)
ofstream out(output);
out.close();

在输出时,我没有得到正确的名称。
看起来像:
在此处输入图像描述

为了创建突出显示的文件,我附加了 UTF-16LE 标记,未突出显示的文件是仅使用原始 UTF-16 行创建的 - 没有一种方法有效。

是否有一些方法可以在没有 WinApi (CreateFilew) 的情况下仅使用 C++ 功能在 Windows 中创建具有 UTF-16LE 名称的文件?

我的编译器是 MinGW 4.0.4,Windows XP(但我希望它可以在所有 Windows 上运行)

提前感谢您的任何提示!

4

1 回答 1

0

谢谢大家,但在这种情况下,C++ 流似乎是无能为力的(至少我有这样的意见)。

所以我使用了 WinApi:

 #ifndef WIN32    // for Linux
   ofstream out(output);
   out.close();
 #else  // for Windows
   LPWSTR lp=(LPWSTR )output;
   CreateFileW(lp,GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ |  
        FILE_SHARE_WRITE,     NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL );
  #endif

我得到了一个名称正确的输出文件:

在此处输入图像描述

再次感谢!

于 2013-01-05T01:28:24.827 回答