C++中将输入条件作为循环判断条件的问题

2025-04-28 06:23:50
推荐回答(3个)
回答1:

这个 google下就知道了。

首先,cin是个对象,没有所谓返回
>>输入操作符返回流对象的引用,cin >> x 返回istream&,cout << x返回oostream&

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

在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( ) 返回当前指针

回答2:

首先你必须明白 while() 括号里必须是一个判断语句(或者是一个bool型的变量,即0,1或者false,true,判断语句的返回值其实也是这样一个变量),而cin>>是一个无返回值的函数,所以它总是成立的,所以不管你输入什么数,都会执行下面的语句。但是输入字符和输入数字不一样,c++有自己的出错处理,输入数字的时候它可以通过舍入或者添加来赋不同的数据类型,但是输入字符的时候就没办法转换成数字了,所以就出错直接退出了

回答3:

需要你的全部代码才能解答