如何清除stringstream?

时间:2010-05-17 09:59:25

标签: c++ stringstream

stringstream parser;

parser << 5;
short top = 0;
parser >> top;
parser.str(""); //HERE I'M RESETTING parser

parser << 6; //DOESN'T PUT 6 INTO parser
short bottom = 0;
parser >> bottom;

为什么不起作用?

1 个答案:

答案 0 :(得分:219)

通常要“重置”字符串流,您需要将基础序列重置为str的空字符串,并使用clear清除任何失败和失败标记。

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

通常会发生的事情是第一个>>到达字符串的末尾并设置eof位,尽管它成功解析了第一个short。此后流上的操作立即失败,因为流的eof位仍然设置。