c++ - 如何清除字符串流?

标签 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;

为什么它不起作用?

最佳答案

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

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

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

关于c++ - 如何清除字符串流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2848087/

相关文章:

C++ cin 与 C sscanf

c++ - static_assert 内部/外部类定义

c++ - 生成基本的学校时间表

c++ - 包括未找到的 clang++ + OpenMP + stdlibc++

c++ - 将 C 识别的指针类型定义为内部 C++ 类

c++ - 为什么 stringstream >> 在失败时更改目标值?

c++ - C++ 中的字符串流

c++ - 如果我不清除 stringstream 会发生什么?

c++ - linux C++,Qt中system()的参数

c++ - 与字符串流不同的插入位置