cin 返回值
来源:互联网 发布:信封制作软件 编辑:程序博客网 时间:2024/05/20 09:20
今天看到如下语句:while (cin >> m >> n)...,心中冒出想一探究竟的念头。操作符<<和>>的返回值是啥,作为bool表达式来用又会产生什么值???带着疑问我去找寻标准库文件。
就以cin >>为例,打开<ISTREAM>头文件,找到类模板basic_istream的定义,摘出这么两个语句来:
typedef basic_istream<_E, _Tr> _Myt;
_Myt& operator>>(......) ......
这说明cin >>的返回值类型就是basic_istream&,可是放到while()中情况又该是怎样的。while()中要求是布尔表达式,难不成basic_istream&类型可以转换成bool类型?继续查看头文件,发现所有的operator重载函数都是<<和>>,没有找到用于类型转换的操作那就只好追溯到父类basic_ios了。
打开头文件<IOS.H>,找到ios的定义,其中有这么一条语句,类型转换函数的定义:
operator void *() const { if(state&(badbit|failbit) ) return 0; return (void *)this; }
有这个函数的定义之后,编译器会在需要的情况下将ios类型自动转换为void*类型。因此,在表达式while (cin >> m >> n)中,括号中的表达式为了匹配bool类型将自动转换为void*类型。如果读入时发生错误返回0,否则返回cin的地址。
http://blog.sina.com.cn/s/blog_404dfe220100d80l.html
- cin 返回值
- cin 返回值 > 表达式值
- cin 返回值 > 表达式值
- cin 返回值 << >> 表达式值
- cin.getline返回值问题
- cin 的返回值,hahaha!!!
- cin的返回值与while(cin>>x)问题
- cin>>i的返回值的问题 & cin输入流
- scanf和cin的返回值
- cin,cout,以及其返回值
- cin>>i的返回值的问题
- cin>>i的返回值的问题
- cin,cout,以及其返回值
- cin,cout,以及其返回值
- scanf和cin的返回值
- cin,cout,以及其返回值
- C++ cin 和cout 返回值问题
- scanf和cin的返回值
- 深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(7)
- C++标准库简介
- 关于迭代器(iterator)和指针的思考
- MFC设置窗口透明
- 深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(8)
- cin 返回值
- google of C++ sizeof
- 深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(9)
- google of 数组名 取地址
- blackberry widget开发技术提高(四)
- 用户注册模块详解(30)
- 深度剖析WinPcap之(五)——编译与使用WinPcap(1)
- Design Patterns in Python
- HTTP POST GET 本质区别详解