2012-03-11 24 views
7

मैं ifstream के साथ काम कर रहा हूं। जब तक ईओएफ बिट सेट नहीं होता तब तक मैं पढ़ता हूं (मुझे इस तरह की आवश्यकता है)।इफस्ट्रीम - ईओएफ बिट रीसेट करें

क्यों तो यह काम नहीं करते:

// IN is ifstream file. CH is char. 

if (IN.eof()) { 
    IN.seekg(ios::beg); 
    IN.clear(); 

    if (read((char*)&CH, sizeof(CH))) 
     cout << "Succes."; 
    else 
     cout << "Not S.";  
} 

read समारोह सफलता कभी भी नहीं है। मैं IN.setstate(ifstream::goodbit) के बजाय IN.clear() का उपयोग करने का प्रयास करता हूं। लेकिन यह वही है, क्या मैं सही हूँ?

+0

वह कोड मान्य नहीं है। आपको वास्तविक 'istream' ऑब्जेक्ट पर 'read' को कॉल करना होगा। –

+3

बीटीडब्लू: आम तौर पर ऑलकैप्स बोलना मैक्रोज़ और डेफिन के लिए उपयोग किया जाता है। – 111111

उत्तर

7

इस तरह अपने कोड में परिवर्तित करें:

IN.clear(); 
IN.seekg(0, ios::beg);