C でクロスプラットフォーム Unicode ファイルを開く
C 標準ライブラリを使用してファイルを開くのは通常は簡単ですが、Unicode ファイル名の処理は現在の課題。
Unicode エンコーディングを採用する理由事項
C 標準ライブラリは Unicode 対応ではありません。つまり、char および wchar_t データ型が Unicode エンコードであることが保証されていません。 Windows では、wchar_t は UTF-16 に対応しますが、標準ライブラリでは UTF-8 ファイル名を直接サポートしていません。
Microsoft Visual C Solution
Microsoft の実装C STL は、const wchar_t* ファイル名を受け入れる fstream のオーバーロードを提供し、次のようにストリームを作成できるようにします。
wchar_t const name[] = L"filename.txt"; std::fstream file(name);
ただし、このオーバーロードは C 11 標準の一部ではなく、GCC の libstdc などの他の STL 実装では使用できません。
クロスプラットフォームの問題
Windows 固有のソリューションであっても、移植性には限界があります。 wchar_t は普遍的に UTF-16 ではなく、char はオペレーティング システムごとに異なるエンコーディングを使用する可能性があります。
代替アプローチ
クロスプラットフォームの互換性を確保するには、3 番目の使用を検討してください。 Unicode ファイル名を処理するパーティ ライブラリまたはオペレーティング システム固有の関数。あるいは、標準ライブラリのファイルを開く関数を使用する前に、Unicode ファイル名をプラットフォーム固有のエンコーディングに手動で変換することもできます。
以上がC で Unicode ファイルをクロスプラットフォームで開くにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。