清除和重置 StringStream
在 C 中,字符串流是与字符串对象关联的输入/输出缓冲区。它允许使用流操作来操作字符串。
问题陈述:
考虑以下代码:
<code class="cpp">stringstream parser; parser << 5; short top = 0; parser >> top; parser.str(""); // Attempt to reset parser parser << 6; // Doesn't put 6 into parser short bottom = 0; parser >> bottom;</code>
尝试时出现问题使用 parser.str("") 清除字符串流的内容后重用字符串流。
解决方案:
要正确清除字符串流,您需要执行两个步骤:
<code class="cpp">parser.str( std::string() ); parser.clear();</code>
说明:
第一个>>操作从字符串流中读取整数 5 并设置 eof 位,因为已到达字符串末尾。随后尝试读取 6 失败,因为 eof 位仍处于设置状态。通过重置底层字符串并清除标志,您可以将流恢复到其初始配置并允许后续操作成功。
以上是如何在 C 中正确清除和重置 StringStream ?的详细内容。更多信息请关注PHP中文网其他相关文章!