मैं std :: ifstream का उपयोग करके अगली पंक्ति में कैसे जा सकता हूं और स्थानांतरित कर सकता हूं?ifstream, लाइन के अंत और अगली पंक्ति में ले जाएँ?
void readData(ifstream& in)
{
string sz;
getline(in, sz);
cout << sz <<endl;
int v;
for(int i=0; in.good(); i++)
{
in >> v;
if (in.good())
cout << v << " ";
}
in.seekg(0, ios::beg);
sz.clear();
getline(in, sz);
cout << sz <<endl; //no longer reads
}
मुझे पता है कि अगर कोई त्रुटि हुई तो मुझे अच्छा लगेगा लेकिन स्ट्रीम होने पर स्ट्रीम अब काम नहीं करेगा। मैं यह देखने के लिए कैसे जांच सकता हूं कि क्या मैं एक और int पढ़ने से पहले लाइन के अंत में हूं?
यह संभव है के लिए एक वैध पूर्णांक के अंत फ़ाइल से तुरंत पालन किया जाना। सफलता के रूप में इसे पार्स करने पर विचार करने के लिए आपको झूठी के लिए .fail() की जांच करने की आवश्यकता है, क्योंकि in.good() फ़ाइल के अंत तक निष्कर्ष निकाला जाता है, भले ही निष्कर्षण ऑपरेशन सफल हो। –
दिलचस्प चार्ल्स! –
@ चार्ल्स: निहित 'ऑपरेटर शून्य * 'कॉल' असफल ', इसलिए' जबकि (में >> v) 'निष्कर्ष सफल होगा यदि निष्कर्ष सफल हो, भले ही ईओएफ राज्य। – dalle