這裏用move和set返回*this , 用display() 重載cout,
- #include<iostream>
- #include<string>
- using namespace std;
- class Screen
- {
- public:
- typedef string::size_type index;
- Screen (index hght,index wdth,const string &cntnts);
- Screen& move(index r,index c);
- Screen& set(char);
- Screen& display(ostream &os);
- private:
- string contents;
- index cursor;
- index height,width;
- };
- Screen::Screen (index hght,index wdth,const string &cntnts):contents(cntnts),cursor(0),height(hght),width(wdth)
- {}
- Screen& Screen::set(char c)
- {
- contents[cursor]=c;
- return *this;
- }
- Screen& Screen::move(index r,index c)
- {
- index row=r*width;
- cursor=row+c;
- return *this;
- }
- Screen& Screen::display(ostream &os)
- {
- os<<contents;
- return *this;
- }
- int main()
- {
- Screen myScreen(5,6,"aaaaa/naaaaa/naaaaa/naaaaa/naaaaa/naaaaa/n");
- myScreen.move(4,0).set('#').display(cout);
- cout<<endl;
- myScreen.display(cout);
- cout<<endl;
- myScreen.move(1,0).set('%').display(cout);
- return 0;
- }
運行結果:
其中有幾個地方,沒有容錯處理……
想想在寫……