首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

有关while语句后跟表达式的理解解决办法

2012-03-16 
有关while语句后跟表达式的理解举一个例子:#include iostream#include stringusingnamespacestdintma

有关while语句后跟表达式的理解
举一个例子:
#include <iostream>
#include <string>
using   namespace   std;

int   main()
{
          int   n=0;
          string   word;
          while(cin> > word)       //此处不能理解
          {
                  if   (word.size() <5)
                            continue;
                  n++;
          }
}

程序中while循环体的作用在我看来是“迫使”用户输入一个字符串,但如果是这样,那就是要对cin> > word的运算结果进行真假判断,这样可以(或者说符合iostream库的容器定义)吗?

另外,如果使用内建的char数组替代string类型(型别),这样写是否可以达到同样效果:
char   word[100];
for   (i=0,i <100,i++)
    word[i]=0;                   //初始化每个元素为0
while(cin> > word[i])
{
          if(word==0)
                continue;
}
恳请各位指教!

[解决办法]
while(cin > > x)等价于
cin > > x;
while(cin.good())
{
.....
cin > > x;
}
[解决办法]
istream和ostream类型也依靠转换函数,这使我们可以写下面这类语句:
while(cin> > x)cout < <x;
输入操作cin> > x返回istream&,这个值将被隐式转换到一个表明cin状态的值,而这个值将由while检测。当然,通常定义这样的转换并不是一个好主义,以这种方式从一个类型隐式转换到另一个,并在转换中丢失了信息。

[解决办法]
while(cin> > word) //此处不能理解

当 cin流出错时候 while 终止,
即输入 ctrl+z 时候结束.
[解决办法]
你要用char输入的话,要在循环里做。
while(cin> > word) //判断输入的字符串是否结束
{
if (word.size() <5) //如果长度小于5继续循环并不计数
continue;
n++; //如果长度大于等于5计数加1继续循环
}
[解决办法]
另外还想问一个小问题:endl是C++而不是C引入的换行标志吧?
------------------------------------------------------
是的.endl会刷新缓冲区, '\n '不会

热点排行