C std::fstream から C FILE* を取得できますか?
fstream で動作する C ライブラリを所有していると仮定します。また、特定の関数については、FILE* を利用する C ライブラリを使用したいと考えています。この願望は合理的であるように思えるかもしれませんが、これには大きな課題があります。
残念ながら、C std::fstream から C FILE ハンドルを直接抽出するクロスプラットフォームのメソッドは存在しません。これは、std::fstream の実装がプラットフォームごとに異なり、その下で FILE を使用する必要がないためです。
std から抽出されたファイル記述子に基づいて FILE オブジェクトを手動で構築しようとしています。 :fstream を使用すると、さらなる問題が発生する可能性があります。 std::fstream と FILE オブジェクトは両方とも、同じファイル記述子に対してバッファリングされた書き込みを実行しようとするため、競合やデータ破損が発生する可能性があります。
したがって、std を変換する必要がある理由を判断することが重要です。 :fstream オブジェクトを FILE* にコピーします。関数の特定の要件に基づいて、次のような代替ソリューションを検討することを検討してください。
これらのオプションは、統合要件に対応する、より堅牢でプラットフォームに依存しないソリューション。
以上がC std::fstream から C FILE* を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。