为多个转换清除和重用stringstream

Clear and reuse a stringstream for multiple conversions

本文关键字:stringstream 清除 转换      更新时间:2023-10-16

我正在处理一个Hacker Rank分配,需要一种将字符串转换为int的方法,于是决定使用stringstream(这是我第一次使用它)。是否有一种方法以某种方式使用相同的声明stringstram(您是这样称呼它的吗?),而不是为每次转换创建新的?我尝试使用。clear()函数,但它仍然不起作用。

如何做到的:

stringstream s0(hour); // this is my way of converting string to int because stoi doesn't seem to work
s0 >> i_hour;
cout << i_hour << endl;
stringstream s1(minute);
s1 >> i_minute;
stringstream s2(second);
s2 >> i_second;`

和我想怎么做:

stringstream ss(hour);
ss >> i_hour;
ss.clear();
ss << minute;
ss >> i_minute;

是否有类似的方法?不断地声明新的,看起来真的很乱。

可以调用str(s)方法将std::istringstream初始化为一个新的字符串。你应该使用std::istringstream,如果你所做的一切是从一个字符串转换。

如果先前的转换导致错误,您还需要clear()来清除其错误状态。

所以你的例子是:

istringstream ss(hour);
ss >> i_hour;
ss.clear();
ss.str(minute);
ss >> i_minute;

使用

ss.str("");

清除流。ss.clear()只重置标志