यहाँ प्रलेखन से कॉल का पता लगाने है। यदि ऑपरेशन के दौरान कोई त्रुटि होती है, तो setstate(failbit)
कहा जाता है।
std::basic_streambuf<CharT,Traits>* std::basic_ofstream::rdbuf() const;
जुड़े धारा बफर देता है। यदि कोई संबंधित स्ट्रीम बफर नहीं है, तो NULL
लौटाता है।
std::basic_streambuf
वास्तव में std::basic_filebuf
इनहेरिट करती है, इसलिए:
std::basic_filebuf<CharT, Traits>* std::basic_filebuf::close();
पुट क्षेत्र मौजूद हैं (फ़ाइल जैसे लिखने के लिए खोला गया था), पहली कॉल overflow(Traits::eof())
फाइल करने के लिए सभी लंबित उत्पादन लिखने के लिए, किसी भी अशांति अनुक्रम सहित।
सबसे हाल ही में कहा जाता है समारोह, के underflow()
, overflow()
, seekpos()
, और seekoff()
, था overflow()
बाहर, तो std::codecvt::unshift()
, शायद कई बार, कॉल imbued स्थान के अनुसार unshift अनुक्रम यह निर्धारित करने के लिए, और लिखते हैं कि अनुक्रम फाइल करने के लिए तो overflow(Traits::eof())
के साथ।
फिर, std::fclose
पर कॉल करके फ़ाइल को बंद कर दिया गया है, भले ही इनमें से कोई भी पिछली कॉल सफल हो या विफल हो।
नोट:।close()
आम तौर पर std::basic_filebuf
(जो, बारी में, आम तौर पर std::basic_fstream
का नाशक से जानी जाती है नाशक के माध्यम से कहा जाता है
सबसे पहले, हम देख सकते हैं कि यह नहीं करता है ' टी वास्तव में flush()
सीधे कॉल आप अपेक्षा के अनुरूप। फिर भी, फ्लशिंग प्रभाव वास्तव में std::basic_filebuf::close()
विधि में होता है। इसके अलावा, हम देख सकते हैं कि यह अभी भी एक फ़ाइल के साथ छेड़छाड़ यानी unshift अनुक्रम लेखन का एक सा है। बाकी कुछ भी नहीं विशेष तब होता है, फ़ाइल बस बंद हो जाती है। ऊपर नोट को
वेतन ध्यान: ज्यादातर मामलों में आप भी std::basic_ofstream::close()
स्पष्ट रूप से कॉल करने के लिए की जरूरत नहीं है।
मैंने अपना प्रश्न दोहराया है, कृपया मूल पोस्ट का संपादन देखें। – NPS