1. 程式人生 > >C++ 運算子過載小練習while(os>>m>>n)

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;
}