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