如何清除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;
为什么不起作用?
通常要“重置”一个stringstream,您需要将基础序列重置为带有str
的空string,并使用清除来清除任何失败和eof标志。
parser.str( std::string() ); parser.clear();
通常发生的事情是,第一个>>
到达string的末尾,并设置eof位,虽然它成功parsing了第一个短。 在此之后的stream上的操作立即失败,因为stream的eof位仍然被设置。