如下程序:int main() } |
|
cin>>word也会有返回值,进而成为while()循环的判断条件.
|
|
10分 |
cin>> 根据后面变量的类型读取数据。
输入结束条件:遇到Enter、Space、Tab键,正常结束,返回真值。 对结束符的处理 :丢弃缓冲区中使得输入结束的结束符(Enter、Space、Tab) 你说的第一种情况你确定是对的吗?我刚测试了,VS2012. cin>>当输入数据类型和变量类型不匹配是会出错,返回假值;输入ctrl+Z也可以结束输入。 |
10分 |
没出现楼主说的情况,程序没有问题,如4楼所说,可能是你头文件出了问题吧。我用的是VS2005,完整的程序如下:
#include “stdafx.h” #include <iostream> #include <string> using namespace std; } |
恩,是的,第一种情况我看错了。但是还是有个问题,当Word是string时什么时候结束呢?经常见到这样的: |
|
如果是while(cin>>line),到换行的时候也不会结束啊,is为空的时候不是还要和cin一样等待输入吗?
|
|
这是我之前收藏的一段话
首先,cin是个对象,没有所谓返回 >>输入操作符返回流对象的引用,cin >> x 返回istream&,cout << x返回oostream& if可直接判断流,如if (cin) 在ios,istream和ostream类中,还定义了若干输入输出函数,它们主要用于错误处理,流的刷新以及流输入输出方式的控制. ios类中定义的描述错误状态的常量: 流的其它成员函数可以从流中读取字符或字符串,对流进行无格式化的输入 输出操作,以及直接控制对流的I/O操作。 返回类型 ostream类的成员 描 述 istream类的成员函数 返回类型 istream类的成员 描 述 |
|
还有这些,都是我之前遇到这个问题时收藏的,希望对你有帮助
一、关于输入运算符和cin的成员函数 cin >> a; >> 是运算符, 有运算结果, 结果就是cin本身。 正因如此, 才可以书写下面语句: cin >> a >> b; 该语句中的 >> 运算从左至右进行, 第一步 cin >> a 的结果是 cin 因此 cin >> a >> b 在完成a的输入后, 就变成了 cin >> b, 相当于 (cin >> a) >> b; 若用输入数据时发生了错误, 可用 cin.bad()、cin.fail()、cin.eof()来检测, 正如前面的回复所说。 二、关于cin的类型转换 cin 转换为逻辑类型时, 到底是什么值呢? 它是根据 cin 的状态决定的, 其结果与good函数的值一致。 这个程序中有两处书写了相同的代码 cin >> a, 而该运算的结果就是 cin, 故可以再简化为: |
|
10分 |
一般不要这么写。要那样写的话,在windows上用CTRL+X,在Linux用CTRL+D可结束输入。
通常while(cin>>word)可改写为: while(true) { cin >> word; if(word == 退出的条件) break; } |
10分 |
你这么写要是cin>>word失败了一次就死循环了。 |
同样的问题,也是很郁闷啊
好像是测试下 if(cin.fial) { cerr << “bad data, try again “; cin.clear(); icn.ignore(1024, “”\n””); continue; } 的话,如果输入Ctr+Z也是一直提示try again .不能继续下面的操作。 |
|
if break == xxx break
|
|
是 Ctr+Z 吧
|
|
也遇到同样的问题,int时文件结束符就可以结束,string怎么不行呢?
|
|
string时,eof没用,Ctrl+Z也不行,后来发现Ctrl+Z再按Enter键可以
|