关于c ++:如何清除stringstream?

How to clear stringstream?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
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;

为什么不起作用?


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

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

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