清除并重用一个字符串流进行多次转换
Clear and reuse a stringstream for multiple conversions
我正在处理一项 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()
仅重置标志。
我正在处理一项 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()
仅重置标志。