首页 > 解决方案 > istringstream split_string(line) 如何在不使用 while 循环的情况下在换行时更新 split_string?

问题描述

line = "hello 2021"
istringstream split_string(line);

是从字符串中获取值的有用代码,即

split_string>>str>>temp_double;

但是,假设 line 的值发生了变化,即

line="hello world"

,并且想用 line 的更新值编写以下代码。

split_string>>str1>>str2;

如何更新 split_string 以便它流式传输线的更新值?

标签: c++sstream

解决方案


在 C++20 标准中,std::istringstream 现在有一个str()允许替换其内部缓冲区内容的方法。此功能在 C++17 或更早版本中不可用。

在 C++20 之前,最接近的替代方法是使用std::stringstream代替std::istringstream和使用<<将内容放入可以读回的字符串流中。

更正:可以用来设置C++20 之前str()的内容,所以这是最简单的解决方案。std::istringstream


推荐阅读