什么有效:
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;时添加另一个条件给出了错误的输出?
答案 0 :(得分:6)
第一个条件将继续循环,而in
有s
的内容,您使用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