How to clear 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;

Why doesn't it work?

92061 次浏览

通常,要“重置”字符串流,您需要使用 str将底层序列重置为空字符串,并使用 clear清除任何 false 和 eof 标志。

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

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