2010-05-17 21 views

उत्तर

200

आमतौर पर एक स्ट्रिंगस्ट्रीम को 'रीसेट' करने के लिए आपको str के साथ खाली स्ट्रिंग पर अंतर्निहित अनुक्रम को रीसेट करने और clear के साथ किसी भी असफल और ईफ फ़्लैग को साफ़ करने की आवश्यकता है।

parser.str(std::string()); 
parser.clear(); 

आमतौर पर क्या होता है कि पहले >> स्ट्रिंग के अंत तक पहुँच जाता है और EOF बिट सेट, हालांकि यह सफलतापूर्वक पहली लघु पार्स करता है। स्ट्रीम के बाद स्ट्रीम पर ऑपरेशन तुरंत विफल हो जाते हैं क्योंकि स्ट्रीम की ईफ बिट अभी भी सेट है।

+0

हाँ, यह ऑपरेटर के बाद ईओएफ सेट करता है >>() का उपयोग किया गया है और कभी-कभी ईओफ़ भी असफल हो सकता है। धन्यवाद –

+21

व्यक्तिगत रूप से मुझे लगता है कि 'parser.str (" ") 'स्पष्ट है, लेकिन यह राय का विषय है। –

+4

स्ट्रीम में सामग्री जोड़ने के अन्य तरीकों के रूप में पहले parser.clear() को रखने के लिए इस उत्तर को संपादित करने के लायक हो सकता है (उदा। पार्सर << 5) तब तक काम नहीं करते जब तक कि पहले स्पष्ट नहीं कहा जाता है। –

संबंधित मुद्दे