std::fstream オブジェクトから FILE* ハンドルを取得する
問題:
C std::fstream オブジェクトを C FILE* に簡単に変換できますか?ハンドル?
背景:
特定の C ライブラリはパラメータとして FILE* ハンドルを受け入れますが、一部の C ライブラリはファイルに std::fstream を使用するため、この変換は望ましいものです。 access.
答え:
残念ながら、std::fstream オブジェクトから FILE* ハンドルを取得する直接的なクロスプラットフォームな方法はありません。
説明:
の実装std::fstream は、FILE* ハンドルの使用を強制しません。したがって、std::fstream オブジェクトからファイル記述子を抽出し、FILE オブジェクトを手動で構築すると、競合や予期しない動作が発生する可能性があります。
代替アプローチ:
変換を試みる代わりに、FILE ハンドルが必要な理由を検討してください。可能であれば、FILE ハンドルを必要としない C ライブラリ内の代替メソッドを検討してください。
funopen() 関数:
あまり推奨されないアプローチとして、 funopen() 関数の使用を調査できます。この BSD 拡張機能を使用すると、実際のファイル操作を実行する関数を提供することで、FILE オブジェクトを作成できます。適切な関数を実装すると、FILE オブジェクト内の std::fstream オブジェクトから読み取ることができます。ただし、このアプローチは移植性がなく、POSIX 標準の一部ではありません。
以上がC std::fstream オブジェクトから C FILE* ハンドルを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。