istringstream split_string(line) 如何在不使用 while 循环的情况下更改行时更新 split_string?

istringstream split_string(line) how to update the split_string while changing line without using while loop?

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

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

split_string>>str>>temp_double;

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

line="hello world"

,有人想用行的更新值编写以下代码。

split_string>>str1>>str2;

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

在 C++20 标准中 std::istringstream now has an str() method that allows replacing the contents of its internal buffer。此功能在 C++17 或更早版本中不可用。

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

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