C++ 運算子過載小練習while(os>>m>>n)
阿新 • • 發佈:2018-12-16
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; }