C++ 运算符重载小练习while(os>>m>>n)

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

总时间限制: 

1000ms

内存限制: 

65536kB

// 在此处补充你的代码

描述

读入两个整数,输出两个整数 ,直到碰到-1

#include <iostream>
using namespace std;
class MyCin
{
};
int main()
{
    MyCin m;
    int n1,n2;
    while( m >> n1 >> n2) 
        cout  << n1 << " " << n2 << endl;
    return 0;
}

输入

多组数据,每组一行,是两个整数

输出

对每组数据,原样输出 
当碰到输入中出现-1 时,程序结束 
输入中保证会有 -1

样例输入

12 44
344 555
-1
2 3

样例输出

12 44
344 555

说实话这道题目有点难,>>不是一个输入的重载,而只是一个状态的重载,还需要重载bool ()

#include <iostream>
using namespace std;
class MyCin
{
private:
	bool status;
public:
	MyCin():status(true){}
	MyCin & operator >>(int & n)
	{
		if (!status)
			return *this;
		cin >> n;
		if (n == -1)
			status = false;
	}

	operator bool()
	{
		return status;
	}

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

猜你喜欢

转载自blog.csdn.net/wwxy1995/article/details/83245093