istringstream split_string(行)如何更新split_string而不使用while循环改变行?


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

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

split_string>>str>>temp_double;

但是,假设line的值改变了,即

line="hello world"

,一个人想用line.

的更新值写下面的代码
split_string>>str1>>str2;

如何更新split_string,使其流式更新的值行?

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

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

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

最新更新