मैं C ++ iostream के लिए FileHandle कैसे प्राप्त करूं?

मुझे Windows पर mingw का उपयोग कर C ++ iostream से जुड़े Windows FileHandle की आवश्यकता है। यह शायद विंडोज़ पर सी ++ आईस्ट्रीम से जुड़े यूनिक्स फ़ाइल डिस्क्रिप्टर जैसा ही है। क्या किसी को पता है कि इसे कैसे ढूंढें? धन्यवाद।

0
मुझे इसकी आवश्यकता है ताकि मैं iostream से जुड़े डिस्क फ़ाइल को फ्लश कर सकूं। stackoverflow.com/questions/8107436/…
जोड़ा लेखक vy32, स्रोत
इसके लिए आपको क्या चाहिए? वास्तविक लक्ष्य के आधार पर एक पोर्टेबल/मानक उत्तर हो सकता है
जोड़ा लेखक sehe, स्रोत
ऐसा करने का कोई मानक तरीका नहीं है, सरल कारण के लिए कि एक 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, स्रोत