131
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;

为什么它不起作用?

4

1 回答 1

254

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

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

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

于 2010-05-17T10:02:27.507 回答