030:你真的搞清楚为啥 while(cin >> n) 能成立了吗?
题面
描述
读入两个整数,输出两个整数 ,直到碰到-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
思路
while(cin>>n)
能持续输入的原因是加了强制类型转换bool()
,用来判断是否还继续输入,如果为-1
时停止输入。其次是正常重载>>
即可
class MyCin
{
private:
bool value;
public:
MyCin() :value(true) {}
operator bool() {
return value;
}
MyCin& operator>>(int& n) {
cin >> n;
if (n == -1)value = false;
return *this;
}
};