C ++のiostreamのFileHandleを入手するにはどうすればよいですか?

Windows上でmingwを使ってC ++のiostreamに関連付けられたWindows FileHandleが必要です。これはおそらく、Windows上のC ++ iostreamに関連付けられているUNIXファイル記述子と同じです。誰もそれを見つける方法を知っていますか?ありがとう。

0
追加された 編集された
ビュー: 1
iostreamに関連付けられたディスクファイルをフラッシュできるようにする必要があります。 stackoverflow.com/questions/8107436/…
追加された 著者 vy32,
あなたはそれを何のために必要としますか?実際の目標に応じて、ポータブル/標準の回答があるかもしれません
追加された 著者 sehe,
iostreamがファイルハンドルに関して全く実装されないかもしれないという単純な理由から、標準的な方法はありません。あなたのライブラリの実装の詳細を掘り下げると、ハンドルベースのストリームストリームが見つかるでしょう。いくつかの醜いキャストでは、iostreamオブジェクトの参照を見つけてハンドルを引き出すことができます。
追加された 著者 antlersoft,

1 答え

Did you see my answer, here:
How do I flush a stdlib output file on win32?

std::basic_filebuf *file_buf = dynamic_cast *>(f.rdbuf());
if (file_buf != 0) {
    struct to_get_protected_member : public std::basic_filebuf {
        int fd() { return _M_file.fd(); }
    };
    printf("your fd is %d\n", static_cast(file_buf)->fd());
}
2
追加された
やった。今あなたは2つのポイントを得る!
追加された 著者 vy32,