读书人

刚开始看C++ PRIMER PLUS 5TH有个有

发布时间: 2012-03-14 12:01:13 作者: rapoo

刚开始看C++ PRIMER PLUS 5TH,有个问题不太明白,请高手们指点下谢谢
#include <iostream>
#include <cstring> // prototype for strcmp()
const int STR_LIM = 50;
int main()
{
using namespace std;
char word[STR_LIM];
int count = 0;

cout < < "Enter words (to stop, type the word done):\n ";

while (cin > > word && strcmp( "done ", word))
++count;

cout < < "You entered a total of " < < count < < " words.\n ";
return 0;
}
这个程序是输入一串字符,遇到done停止,计算前面输入单词的个数,但不明白是怎么实现的,就是while那句比较费解,请高手指点下啊

[解决办法]
while (cin > > word && strcmp( "done ", word))

输入字符串到word成功,并且字符串内容不为done
则循环
[解决办法]
首先看&&,具有短路求值的性质
然后看cin> > word,这个就是输入字符串到word数组中,如果输入了文件结束符,那就是false,直接短路退出循环
最后看strcmp(),就是比较word和 "done ",如果相同返回false,也会退出循环

读书人网 >C++

热点推荐