NGC*_*543 4 c++ loops stringstream zero
程序在逗号之间找到整数,如“2,33,5”-> 2 33 5。问题是如果我把例如“0,12,4”这样的字符串,它为什么工作。stringstream 不应该将 0 放入 tmp 中,所以循环就像开始时的 while(0) 一样吗?
vector<int> parseInts(string str) {
stringstream ss(str); //getting string
vector<int> result;
char ch;
int tmp;
while(ss >> tmp) { //while(IS IT INTEGER ALREADY OR NOT?)
result.push_back(tmp);
ss >> ch;
}
return result;
Run Code Online (Sandbox Code Playgroud)
stringstream 不应该将 0 放入 tmp 中,所以循环就像开始时的 while(0) 一样吗?
while 条件是ss >> tmp。如果您查看 的文档cin,您会发现operator>>()返回一个istream&. 它并没有返回输入你刚才读,在这种情况下,int值0。
此外,istream(或其基类之一)重载operator bool()允许istream对象隐式转换为 a bool,这是while语句条件的结果所需的类型。一个istream对象将评估作为false每当调用过程中发生错误operator>>()。如果没有错误,则计算结果为true。
由于输入0是有效的int,while循环继续下一次迭代。