我正在进行黑客等级分配,需要一种方法将字符串转换为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;
有什么方法可以这样做吗?看起来真的很乱以继续声明新的。
答案 0 :(得分:2)
您可以调用str(s)
方法将std::istringstream
初始化为新字符串。如果您所做的只是从字符串转换,则应使用std::istringstream
。
如果之前的转化导致错误,您还需要clear()
,以清除其错误状态。
所以你的例子是:
istringstream ss(hour);
ss >> i_hour;
ss.clear();
ss.str(minute);
ss >> i_minute;
答案 1 :(得分:2)
使用
ss.str("");
清除流。 ss.clear()
仅重置标志。