std::fstream による Unicode ファイル処理
Windows アプリケーションを使用する場合、std::fstream (ofstream または ifstream) で Unicode ファイル名を処理する)は課題となる可能性があります。 C 標準ライブラリにはネイティブ Unicode サポートがなく、char と wchar_t は必ずしも Unicode エンコードを表すとは限りません。
Windows システムでは、wchar_t は UTF-16 に対応しますが、標準ライブラリには UTF-8 ファイル名を直接サポートしていません。 。 Microsoft STL は、const wchar_t* ファイル名を受け入れるファイルストリームのコンストラクターを提供し、次のようなストリームの作成を可能にします。
wchar_t const name[] = L"filename.txt"; std::fstream file(name);
ただし、このオーバーロードは C 11 によって標準化されておらず、他の STL 実装には存在しません。 MinGW(-w64) 用の GCC の libstdc など。さらに、wchar_t は Windows では UTF-16 を表しますが、異なるオペレーティング システムでは同じエンコーディングを使用しない場合があります。
クロスプラットフォーム ソリューション
標準化された Unicode サポートでは、std::fstream で Unicode ファイル名を処理するための移植可能なソリューションはすぐには利用できません。代替アプローチでは、プラットフォーム固有の回避策または外部ライブラリが必要になる場合があります。
以上がstd::fstream で Unicode ファイル名を移植可能に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。