Як отримати FileHandle для C ++ iostream?

Мені потрібен Windows FileHandle, пов'язаний з C ++ iostream за допомогою mingw на Windows. Це, ймовірно, те ж саме, що і дескриптор файлів UNIX, асоційований з io ++ потоком на Windows. Хто-небудь знає, як його знайти? Дякую.

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, джерело
IT KPI C/С++ новым годом
IT KPI C/С++ новым годом
747 учасників

Чат обсуждения С/С++. - Вопросы "напишите за меня лабу" - это оффтоп. - Оффтоп, флуд, оскорбления и вбросы здесь не приняты. - За нарушение - предупреждение или mute на неделю. - За спам и рекламу - ban. Все чаты IT KPI: https://t.me/itkpi/1147