如何获取C ++ iostream的FileHandle?

我需要在Windows上使用mingw与C ++ iostream关联的Windows FileHandle。这可能与Windows上与C ++ iostream关联的UNIX文件描述符相同。有谁知道如何找到它?谢谢。

0
我需要它,以便我可以刷新与iostream关联的磁盘文件。 stackoverflow.com/questions/8107436/…
额外 作者 vy32,
你需要什么?根据实际目标,可能存在便携/标准答案
额外 作者 sehe,
没有标准的方法可以做到这一点,原因很简单,根据文件句柄可能无法实现iostream。如果您深入了解库的实现细节,您将找到基于句柄的streamimpl,并且通过一些丑陋的转换,您将能够在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
额外
我做到了。现在你得到两分!
额外 作者 vy32,