C++ 清除并重用stringstream进行多次转换

C++ 清除并重用stringstream进行多次转换,c++,stringstream,C++,Stringstream,我正在进行黑客等级分配,需要一种将字符串转换为int的方法,并决定使用stringstream(我第一次使用它)。是否有一种方法可以使用相同的声明stringstram(您是这样称呼它的?)而不是为每次转换创建新的stringstram?我尝试使用.clear()函数,但仍然不起作用 我是如何做到的: stringstream s0(hour); // this is my way of converting string to int because stoi doesn't seem to

我正在进行黑客等级分配,需要一种将字符串转换为int的方法,并决定使用stringstream(我第一次使用它)。是否有一种方法可以使用相同的声明stringstram(您是这样称呼它的?)而不是为每次转换创建新的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 s0(小时);//这是我将字符串转换为int的方法,因为stoi似乎不起作用
s0>>一小时;
我不能再等一分钟;
流s2(第二);
s2>>1秒`
我想怎么做:

stringstream ss(hour);
ss >> i_hour;
ss.clear();
ss << minute;
ss >> i_minute;
stringstream ss(小时);
ss>>一小时;
ss.clear();
ss>i_分钟;
有没有类似的方法?继续声明新字符串看起来非常混乱。

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

如果上一次转换导致错误,您还需要
clear()
,以清除其错误状态

你的例子是:

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


清理小溪
ss.clear()
只重置标志。

@Arūnas:Ups,是的,双柱:-)更好的是:
std::stoi
ss.str("");