使用&&和while循环的多个条件

时间:2016-05-08 05:20:02

标签: c++ while-loop

什么有效:

ifstream in("CallHello.cpp");
while(in >> s) {
    if(s=="cout")
        count++;
}
cout<<"Number of words : "<<count<<endl;

此处输出为1,这是正确的。

什么不起作用

ifstream in("CallHello.cpp");
while(in >> s && s == "cout") {
    count++;
}
cout<<"Number of words : "<<count<<endl;

输出为0,对于上面的错误。

为什么在使用&amp;&amp;时添加另一个条件给出了错误的输出?

2 个答案:

答案 0 :(得分:6)

第一个条件将继续循环,而ins的内容,您使用while(in >> s && s == "cout")的第二个条件只有在您第一次检索{的值时才有效{1}}的字符串为s,然后它会运行该块,因此,"cout"中的第一个值也不是第一次s,因此它永远不会循环。< / p>

答案 1 :(得分:0)

原因如下:

string s;
int count = 0;
while (in >> s && s == "cout") { // Ops: s == ""
    ++count;                     // while condition is false!
}                                // loop is skipped!

cout<<"Number of words : "<<count<<endl; // count was never incremented
                                         // Output is 0