0

重複の可能性:
std::fstream (ofstream または ifstream) を Unicode ファイル名で開くには?

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 に答える