std::fstream から FILE* ハンドルを取得する
C プログラミングの領域では、 FILE ハンドルを必要とする C 関数。ただし、標準 C ライブラリは、ファイル入出力用の std::fstream クラスを提供します。したがって、既存の std::fstream オブジェクトから FILE ハンドルを派生するクロスプラットフォームのアプローチはありますか?
制限事項
残念ながら、答えは否定的です。 std::fstream クラスは、内部で FILE* を使用する義務はありません。基になるファイル記述子を std::fstream から正常に抽出し、FILE オブジェクトを手動で構築できたとしても、その後、複数のバッファリングされたオブジェクトが同じファイル記述子に書き込もうとするため、複雑さが発生します。
代替の考慮事項
FILE* への変換を追求する代わりに、次のことを行う価値があります。この改宗を求める背後にある理由を質問してください。この特定の要件を必要とせずに、目的の機能を実現する他の方法はありますか?
考えられるアプローチ (推奨されません)
何らかの理由で変換が依然として必要であるとみなされる場合、funopen() を検討することを検討してください。ただし、このアプローチは POSIX API ではないため、異なるオペレーティング システム間での移植性は不確かであることに注意してください。さらに、funopen() の実装はプラットフォームによって異なります。
以上がC std::fstream オブジェクトから FILE* ハンドルを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。