सी ++ में, क्या कोई ऐसा मामला है जहां std::ifstream open()
सफल हो सकता है, लेकिन std::ifstream good()
गलत हो सकता है?सफलतापूर्वक खोलें लेकिन अच्छा नहीं है?
संपादित करें: जी के साथ परीक्षण किया ++ 4.7.1
#include <iostream>
#include <fstream>
int main(int argc, char *argv[])
{
std::ifstream filestream("testfile");
std::cout<<filestream.good()<<std::endl;
std::cout<<filestream.eof()<<std::endl;
std::cout<<filestream.fail()<<std::endl;
std::cout<<filestream.bad()<<std::endl;
return 0;
}
वापस आ जाएगी: 1, 0, 0, 0 जो good = TRUE
और eof = fail = bad = FALSE
का मतलब है एक खाली फ़ाइल के लिए। क्या यह सामान्य है ?
+1 कार्यान्वयन वास्तव में फ़ाइल का परीक्षण नहीं कर सकता है जब तक आप एक पठन का प्रयास न करें और वह पढ़ना विफल हो जाए। –
@ डेविडरोड्रिगुएज़-ड्राईबीस सामान्य रूप से, इनपुट विफल होने तक 'eofbit' का परीक्षण करने का कोई अर्थ नहीं होता है। और तथ्य यह है कि 'std :: ifstream :: good() '' eofbit' का परीक्षण करता है (अन्य स्थिति बिट्स के अतिरिक्त) इसे बहुत अधिक बेकार बनाता है। –
मुझे नहीं लगता कि 'अच्छा' का उपयोग कर प्रश्नकर्ता में कोई * नुकसान * है? यह सिर्फ इसलिए है कि 'eofbit' सेट नहीं है, इसलिए आप सामान्य की तरह सत्य की स्ट्रीम भी कर सकते हैं। मुझे लगता है कि कुछ बेकार असामान्य करने में पठनीयता हानि है, और जैसा कि आप कहते हैं कि 'अच्छा' का कोई भी उपयोग निर्विवाद रूप से असामान्य है ... –