2011-10-30 6 views
6

मैं निम्न विधि का उपयोग कर रहा एक स्ट्रिंग में एक फ़ाइल की सामग्री पढ़ने:स्ट्रिंग करने के लिए फ़ाइल की सामग्री को पढ़ने के लिए "ifstream", "stringstream" और "rdbuf()" का उपयोग करते समय I/O त्रुटियों की जांच कैसे करें?

std::ifstream t("file.txt"); 
std::stringstream buffer; 
buffer << t.rdbuf(); 
std::string data(buffer.str()); 

लेकिन मैं आई/ओ त्रुटियों के लिए कैसे की जाँच करें और सुनिश्चित करें कि सभी सामग्री वास्तव में पढ़ा जा चुका है करते हैं?

उत्तर

5

आप इसे उसी तरह आप किसी भी अन्य प्रविष्टि संचालन के साथ यह करना होगा कर सकते हैं:

if (buffer << t.rdbuf()) 
{ 
    // succeeded 
} 

या तो t.rdbuf() से निकासी या buffer को प्रविष्टि विफल रहता है, failbitbuffer पर स्थापित किया जाएगा।

0

t.good() पर विवरण देख सकते हैं bashor

नोट से उल्लेख किया गया था हालांकि, कि t.good() != t.bad(); मैं आमतौर पर उपयोग करने पर आप

(विशिष्ट स्थितियों के लिए या !t.fail(), !t.eof()) !t.bad() उपयोग कर सकते हैं

if (!t.bad()) 
{ 
    // go ahead if no _unpexpected errors 

} 

if (!t.fail()) 
    t.clear(); // clear any _expected_ errors 
संबंधित मुद्दे