C/C++教程

030:你真的搞清楚为啥 while(cin >> n) 能成立了吗?

本文主要是介绍030:你真的搞清楚为啥 while(cin >> n) 能成立了吗?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目:

http://cxsjsxmooc.openjudge.cn/2021t3springall2/030/

分析:

这里面有前面学过的运算符“<<”的重载和

强制运算符转换的重载(第七周-1-06:50)(题目所问原因),其作用是将 while( m >> n1 >> n2) 语句中m读取完成后返回的 MyCin类型变量强制转换成bool变量。

参考代码:

#include <iostream>
using namespace std;
class MyCin
{
// 在此处补充你的代码
private:
    bool flag;
public:
    MyCin():flag(true){}
    MyCin & operator>>(int & n){
        if(flag == false) return *this;
        cin >> n;
        if(n == -1)  flag = false;
        return *this;
    }
     operator bool(){
        return flag;
    }

};
int main()
{
    MyCin m;
    int n1,n2;
    while( m >> n1 >> n2) //重载">>"
        cout  << n1 << " " << n2 << endl;
    return 0;
}

 

注:以上代码虽然通过了OpenJudge的样例测试,但受限于本人水平,如有疏漏,恳请斧正。

这篇关于030:你真的搞清楚为啥 while(cin >> n) 能成立了吗?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!