c++ 直接用sstream进行循环做数据的流入流出时,总是会出现最后多循环一次的现象。
如:
stringstream ss1("11 12 12 21 32 52");
string str;
while(ss1)
{
ss1>>str;
cout<<str<<endl;
}
输出结果
经过查实,stringstream会等待系统的继续输入,因此,未输入时其返回值仍为1,最后一次的结果被再次执行了一遍。
解决方式:
stringstream ss1("11 12 12 21 32 52");
string str;
while(ss1>>str)
{
cout<<str<<endl;
}
或可利用数组将结果保存下来,除了最后一个值之外的都有效。