2010-05-17 52 views

回答

200

通常要「重置」一個字符串流,您需要將基礎序列重置爲空字符串與str,並清除任何失敗和eof標誌與clear

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

通常什麼情況是,第一>>到達字符串的結尾,並設置EOF位,但它成功地解析出第一個短。在此之後的流上的操作立即失敗,因爲流的eof位仍然被設置。

+0

是的,它在運算符>>()已被使用並且有時eof可以設置失敗之後設置eof。謝謝 – 2010-05-17 10:10:19

+21

我個人認爲'parser.str(「」)'更清晰,但這是一個意見問題。 – 2010-05-17 10:14:21

+4

可能值得編輯這個答案,首先放入parser.clear(),因爲向流中添加內容的其他方法(例如解析器<< 5)不起作用,除非首先調用clear。 – 2014-02-20 22:13:23