यदि मेरे पास std::ofstream
है जो खोला गया हो या नहीं हो सकता है, तो क्या यह close
पर ध्यान देने योग्य है? अन्य शब्दों में close()
!is_open()
पर कुछ भी बुरा (फेंक अपवाद, आदि) करें। उदाहरण के लिएक्या आप सुरक्षित रूप से ऐसी फ़ाइल बंद कर सकते हैं जिसे कभी खोला नहीं गया था?
std::ofstream out;
if (some_condition)
{
out.open(path, std::ios::out);
}
बाद मैं फ़ाइल के साथ किया हूँ, मैं सिर्फ कह सकते हैं
out.close();
या मैं पहले की जाँच करनी चाहिए
if (out.is_open())
out.close();
cppreference पर std::basic_fstream::close
का ही वर्णन
assoc बंद करता है iated फ़ाइल।
प्रभावी रूप सेrdbuf()->close()
पर कॉल करता है। यदि ऑपरेशन के दौरान कोई त्रुटि होती है, तोsetstate(failbit)
कहा जाता है।
आप ऑब्जेक्ट को केवल दायरे से बाहर जाने दे सकते हैं ... –
आम तौर पर मैं यही करता हूं, यही कारण है कि मुझे 'std :: ofstream' पसंद है, लेकिन इस विशेष मामले में मैं फ़ाइल को पहले बंद करना चाहता हूं अन्यथा यह होगा। – CoryKramer
यदि आप ['std :: ofstream :: close'] (http://www.cplusplus.com/reference/fstream/ofstream/close/) के लिए cppreference को देखते हैं, तो आप देखेंगे कि 'बंद करने का विशिष्ट उदाहरण एक खुली फ़ाइल पर इस्तेमाल नहीं किया जाता है। संक्षेप में, कुछ भी बुरा नहीं होता है, यह केवल असफलता सेट करता है ताकि आप 'स्ट्रीम' के साथ कुछ भी करने का प्रयास कर सकें, बाद में समस्याएं हो सकती हैं। –