क्या बीच का अंतर है:C++ - fstream और ofstream
fstream texfile;
textfile.open("Test.txt");
और
ofstream textfile;
textfile.open("Test.txt");
उनके कार्य ही कर रहे हैं?
क्या बीच का अंतर है:C++ - fstream और ofstream
fstream texfile;
textfile.open("Test.txt");
और
ofstream textfile;
textfile.open("Test.txt");
उनके कार्य ही कर रहे हैं?
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.
टिप्पणियों में कुछ और महान अंक हैं।
cplusplus.com here और here पर उनके पृष्ठों पर नज़र डालें।
ofstream
ostream
से विरासत। fstream
iostream
से विरासत में मिलता है, जो istream
और stream
दोनों से प्राप्त होता है। आम तौर पर ofstream
केवल आउटपुट ऑपरेशंस का समर्थन करता है (यानी टेक्स्टफाइल < < "हैलो"), जबकि fstream
आउटपुट और इनपुट ऑपरेशंस दोनों का समर्थन करता है लेकिन फ़ाइल खोलते समय दिए गए झंडे के आधार पर। आपके उदाहरण में, डिफ़ॉल्ट रूप से ओपन मोड ios_base::in | ios_base::out
है। ofstream
का डिफ़ॉल्ट खुला मोड ios_base::out
है। इसके अलावा, ios_base::out
हमेशा ऑस्ट्रीम ऑब्जेक्ट्स के लिए सेट होता है (भले ही स्पष्ट रूप से तर्क मोड में सेट न हो)।
उपयोग ofstream
जब textfile
उत्पादन के लिए ही है, ifstream
इनपुट के लिए ही है, दोनों इनपुट और आउटपुट के लिए fstream
। यह आपके इरादे को और अधिक स्पष्ट बनाता है।
वाई! cite cppreference.com इसके बजाय –
http://en.cppreference.com/w/cpp/io – ooga
@ चीयर्संधथ.-अल्फ cppreference.com सुंदर है, लेकिन Google मुझे C++ fstream' के लिए cplusplus.com देता है। Cplusplus.com पर cppreference.com के अन्य फायदे क्या हैं? –
इसके अलावा, 'ist_base :: out', और 'fosream :: open' डिफ़ॉल्ट' को खोलने के लिए 'istream :: open' डिफ़ॉल्ट' ios_base :: में | ios_base :: out' –
इसके अलावा, 'std :: fstream' के मामले में, फ़ाइल खोलने का प्रयास विफल हो जाएगा यदि फ़ाइल मौजूद नहीं है। यह 'std :: ofstream' के विपरीत है जो एक फ़ाइल बनाता है अगर कोई नहीं मिला। कन्स्ट्रक्टर को कॉल करते समय 'std :: ios_base :: trunc' ध्वज को मास्क पर जोड़ना होगा या' std :: fstream' पर 'open') को जोड़ना होगा। – 0x499602D2