2014-04-24 12 views
6

क्या बीच का अंतर है:C++ - fstream और ofstream

fstream texfile; 
textfile.open("Test.txt"); 

और

ofstream textfile; 
textfile.open("Test.txt"); 

उनके कार्य ही कर रहे हैं?

उत्तर

5

ofstream में केवल आउटपुट के लिए विधियां हैं, इसलिए उदाहरण के लिए यदि आपने textfile >> whatever को संकलित नहीं किया है तो यह संकलित नहीं होगा। fstream इनपुट और आउटपुट के लिए उपयोग किया जा सकता है, हालांकि काम क्या होगा जो आप निर्माता/open पर भेजे गए झंडे पर निर्भर करते हैं।

std::string s; 
std::ofstream ostream("file"); 
std::fstream stream("file", stream.out); 

ostream >> s; // compiler error 
stream >> s; // no compiler error, but operation will fail. 

टिप्पणियों में कुछ और महान अंक हैं।

+1

इसके अलावा, 'ist_base :: out', और 'fosream :: open' डिफ़ॉल्ट' को खोलने के लिए 'istream :: open' डिफ़ॉल्ट' ios_base :: में | ios_base :: out' –

+5

इसके अलावा, 'std :: fstream' के मामले में, फ़ाइल खोलने का प्रयास विफल हो जाएगा यदि फ़ाइल मौजूद नहीं है। यह 'std :: ofstream' के विपरीत है जो एक फ़ाइल बनाता है अगर कोई नहीं मिला। कन्स्ट्रक्टर को कॉल करते समय 'std :: ios_base :: trunc' ध्वज को मास्क पर जोड़ना होगा या' std :: fstream' पर 'open') को जोड़ना होगा। – 0x499602D2

0

cplusplus.com here और here पर उनके पृष्ठों पर नज़र डालें।

ofstreamostream से विरासत। fstreamiostream से विरासत में मिलता है, जो istream और stream दोनों से प्राप्त होता है। आम तौर पर ofstream केवल आउटपुट ऑपरेशंस का समर्थन करता है (यानी टेक्स्टफाइल < < "हैलो"), जबकि fstream आउटपुट और इनपुट ऑपरेशंस दोनों का समर्थन करता है लेकिन फ़ाइल खोलते समय दिए गए झंडे के आधार पर। आपके उदाहरण में, डिफ़ॉल्ट रूप से ओपन मोड ios_base::in | ios_base::out है। ofstream का डिफ़ॉल्ट खुला मोड ios_base::out है। इसके अलावा, ios_base::out हमेशा ऑस्ट्रीम ऑब्जेक्ट्स के लिए सेट होता है (भले ही स्पष्ट रूप से तर्क मोड में सेट न हो)।

उपयोग ofstream जब textfile उत्पादन के लिए ही है, ifstream इनपुट के लिए ही है, दोनों इनपुट और आउटपुट के लिए fstream। यह आपके इरादे को और अधिक स्पष्ट बनाता है।

+0

वाई! cite cppreference.com इसके बजाय –

+1

http://en.cppreference.com/w/cpp/io – ooga

+0

@ चीयर्संधथ.-अल्फ cppreference.com सुंदर है, लेकिन Google मुझे C++ fstream' के लिए cplusplus.com देता है। Cplusplus.com पर cppreference.com के अन्य फायदे क्या हैं? –

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