2010-05-17 79 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