2015-05-22 8 views
5

फ़ाइलों का उपयोग करते समय, नीचे दिए गए दो उदाहरणों में से कौन सा पसंदीदा है? क्या कोई दूसरे की तुलना में बेहतर प्रदर्शन प्रदान करता है? क्या कोई अंतर है?ifstream और ऑफस्ट्रीम या fstream

ifstream input("input_file.txt"); 
ofstream output("output_file.txt"); 

बनाम

fstream input("input_file.txt",istream::in); 
fstream output("output_file.txt",ostream::out); 
+2

एक 'ओस्ट्रीम' का उपयोग करते हुए जहां 'ओस्ट्रीम' की अपेक्षा की जाती है, उसके परिणामस्वरूप त्रुटि हो जाएगी, इससे आपको बहुत अधिक सिर खरोंच मिल जाएगी, अगर आप गलती से इनपुट मोड में खोले गए 'fstream' का उपयोग करते हैं, जिसे संकलक जीता शिकायत नहीं करते हैं। – user657267

उत्तर

11

अभिनय की दृष्टि से, इस मामले में शायद ही नगण्य मतभेद हैं। सबसे अच्छा आप थोड़ा स्मृति बचा रहे हैं।

क्या मायने रखता है कि पहला मामला अर्थशास्त्र के साथ मदद करता है: std::fstream इनपुट, आउटपुट या दोनों में खोला जा सकता है। इस वजह से आपको std::ifstream और std::ofstream का उपयोग करते समय यह सुनिश्चित करने के लिए घोषणा की जांच करनी होगी कि आप क्या कर रहे हैं यह स्पष्ट कर देगा। दूसरे मामले में मानव त्रुटि के लिए और अधिक जगह है, इसलिए इसे टालना चाहिए।

अंगूठे का मेरा नियम std::fstream का उपयोग करना है जब आपको फ़ाइल को पढ़ने और लिखने की आवश्यकता होती है और केवल इस मामले में।

0

बस अधिक संक्षिप्त फार्म का उपयोग करें जब तक आप अलग व्यवहार की आवश्यकता है ... अन्यथा करने के लिए सिर्फ अधिक त्रुटियों के लिए कमरे बनाने के लिए है। Fwiw, जब संभव हो मैं गुंजाइश के लिए धारा पसंद करते हैं और जाँच इस तरह काम किया खुला:

if (std::ifstream input{"input_file.txt"}) 
    ...use input... 
else 
    ...log and/or throw... 
+0

क्या आप से अधिक फ़ाइल इनपुट विधि का उपयोग करने का सुझाव देंगे "अगर (input.is_open())"? –

+0

@ishyfishy: निश्चित रूप से - मुझे पिछली बार याद नहीं आया कि मैंने 'is_open()' का उपयोग किया था। –

+1

इस विधि में कुछ दिलचस्प बिंदु हैं: स्ट्रीम केवल 'if' के अंत तक ही रहेगी, इसलिए आपको फ़ाइल को बंद करने के बारे में चिंता करने की आवश्यकता नहीं है और आप धाराओं के बूल के निहित रूपांतरण का उपयोग कर सकते हैं । – meneldal

संबंधित मुद्दे