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

问个很虚伪的有关问题,当遇到文件尾时,带一个char&形参的cin.get()函数会返回什么?非常感谢您的回答,小弟我会给你玩360度裸体自由高空旋转跨

2013-09-28 
问个很虚伪的问题,当遇到文件尾时,带一个char&形参的cin.get()函数会返回什么?非常感谢您的回答,我会给你

问个很虚伪的问题,当遇到文件尾时,带一个char&形参的cin.get()函数会返回什么?非常感谢您的回答,我会给你玩360度裸体自由高空旋转跨越大布列颠北爱尔
问个很虚伪的问题,当遇到文件尾时,带一个char&形参的cin.get()函数会返回什么?非常感谢您的回答,我会给你玩360度裸体自由高空旋转跨越大布列颠北爱尔联合王国。
[解决办法]
char参数不变,返回的input stream会设置failbit && eofbit
[解决办法]

引用:
Quote: 引用:

char参数不变,返回的input stream会设置failbit && eofbit

怎么感觉返回了一个空的cin对象,因此它会导致循环的条件为假。
istream类重载了向bool的转换,可以直接用在循环里并不代表对象变成空,而是代表流的状态是错误状态
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

if (cin >> x) 
或者 if (!cin)
经常用的

查了半天MSDN和cplusplus.com ,也没找到单参的get关于返回值的描述。

返回的是cin对象的引用,也就是返回*this

看看一个参数的get成员函数的定义
basic_istream<Elem, Tr>& get(
    Elem& _Ch
);

那如果遇到EOF,单参get是不是会返回一个空cin对象?


啥叫空的cin对象啊?
返回的还是原来的cin对象的引用(cin对象不可复制,不可赋值)
cin重载了bool类型转换,这个转换函数根据几个标志位是否设置来返回true或者false
if (cin)的时候,会把cin对象转换成bool类型
这是cin的类型转换函数在起作用,和cin.get()的返回值不是一回事
[解决办法]
引用:
Quote: 引用:

前两天在《C++ Primer Plus》上看到的,单个参数的get()方法返回一个已经被转换好的bool值来判断是判断是否达到文件尾。

也就是说遇到文件尾EOF,单个参数的get()方法返回false?


骚年你太纠结了!
cin读EOF,就会设置failbit && eofbit,在c++11之前,在判断语句里,cin首先转为void *,在转bool。
cin转NULL的前提是设置了failbit或badbit。
所以cin遇到EOF,先返回NULL,再隐式转为false。
从c++11,是直接转bool

热点排行