标题:请问一下cin的返回值是什么?
只看楼主
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
结帖率:60%
 问题点数:0 回复次数:10 
请问一下cin的返回值是什么?
刚学C++最一道ACM时,遇到如下代码:
int main()
{
    int a,b;
    while(cin >> a >> b)
        cout << a+b << endl;
}
请问循环终止的条件是什么?cin的返回值是什么?  谢谢大家了
搜索更多相关主题的帖子: cin 返回值 int ACM 
2008-03-07 01:27
hezal
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-3-7
得分:0 
当你输入了a和b 的值后,循环就停止了吧.
2008-03-07 02:16
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
得分:0 
[bo]以下是引用 [un]hezal[/un] 在 2008-3-7 02:16 的发言:[/bo]

当你输入了a和b 的值后,循环就停止了吧.


不是的,我不知道什么时候循环停止

2008-03-07 11:55
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
Ctrl+d
结束符

2008-03-07 12:24
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
得分:0 
ctrl+ z 应该也可以吧

2008-03-07 12:28
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
首先,cin是个对象,没有所谓返回
>>输入操作符返回流对象的引用,cin >> x 返回istream&,cout << x返回oostream&

if可直接判断流,如if (cin)
while间接判断,如while (cin >> x)
若流被标记错误(读取失败)就返回false.
ctrl+z,F6可跳出循环,这代表eof(文件结束符)

Fight  to win  or  die...
2008-03-07 12:56
a19870502
Rank: 1
等 级:新手上路
帖 子:114
专家分:0
注 册:2007-10-31
得分:0 
版主的回答十分详细!!顶!
2008-03-08 10:29
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
得分:0 
谢谢aipb2007  
能解释一下什么时候流被标记错误么?

2008-03-09 01:32
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 
在ios,istream和ostream类中,还定义了若干输入输出函数,它们主要用于错误处理,流的刷新以及流输入输出方式的控制.
    错误处理
    在对一个流对象进行I/O操作时,可能会产生错误。当错误发生时,错误的性质被记录在ios类的一个数据成员中。

    ios类中定义的描述错误状态的常量:
       goodbit-------------没有错误,正常状态 
       eofbit--------------到达流的结尾
       failbit-------------I/O操作失败,清除状态字后,可以对流继续进行操作。
       badbit--------------试图进行非法操作,清除状态字后,流可能还可以使用。
       hardfail------------致命错误,不可恢复的错误。
    对应于这些位,可用ios中定义的如下函数来检查流的当前状态位:
       int good()---------如果正常,返回非0值
       int bad()----------如果badbit被设置,返回非0值
       int eof()----------如果eofbit被设置,返回非0值
       int fail()---------如果failbit被设置,返回非0值
       int rdstate()------返回当前错误状态位.

    流的其它成员函数可以从流中读取字符或字符串,对流进行无格式化的输入 输出操作,以及直接控制对流的I/O操作。

返回类型         ostream类的成员                   描      述
ostream&         put(char ch)                 向流中输出一个字符ch,不进行任何转换
ostream&        write(char*,int)         向流中输出指定长度的字符串,不进行转换
ostream&         flush( )                           刷新流,输出所有缓冲的但还未输出的数据
ostream&        seekp(streampos)         移动流的当前指针到给定的绝对位置
ostream&     seekp(sereamoff,seek_dir)   流的当前指针类似与文件的当前指针
streampos        teelp( )                        返回流的当前指针的绝对位置

istream类的成员函数

返回类型           istream类的成员                描       述
 int                      get( )                              读取并返回一个字符
istream&            get(char&c)                  读取字符并存入c中
istream&             putback( )                 将最近读取的字符放回流中
istream&           read(char*,int)          读取规定长度的字符串到缓冲区中
int                      peek( )                               返回流中下一个字符,但不移动文件指针
istream&          seekg(streampos)           移动当前指针到一绝对地址
istream&        seekg(streampos,seek_dir)    移动当前指针到一相对地址
streampos              tellg( )                    返回当前指针



其他地方找的,很多函数我也没常用过,自己看吧!

Fight  to win  or  die...
2008-03-09 12:31
xuxuliu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-3-26
得分:0 
这个我倒是略知一二,但是不是完全知道。就是当在缓冲区读取到的数据与>>后面的变量类型不匹配的时候,就会结束。比如说在楼主程序里,a,b是int的,你如果在下面的cin>>里面输入的是非int的(比如说是‘a'或其它)就会结束。。。
2010-03-26 08:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-202310-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.256558 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved