c++ primer 第五版 Screen类(不包含Window_mgr类)
来源:互联网 发布:gprs数据采集器 编辑:程序博客网 时间:2024/06/03 06:26
#include <iostream>#include <string>class Screen{public: using pos = std::string::size_type; Screen() = default; Screen(pos ht, pos wd, char c):height(ht),width(wd),contents(ht*wd,c){} Screen& display(std::ostream &os) { do_display(os); return *this; } const Screen& display(std::ostream &os) const//调用do_display输出字符串 { do_display(os); return *this; } Screen& set(char);//设置光标处字符 Screen& set(pos, pos, char);//设置给定坐标处字符 char get() const //返回光标处字符 { return contents[cursor]; } char get(pos ht, pos wd) const;//返回给定坐标处字符 Screen& move(pos r, pos c);private: void do_display(std::ostream &os) const {os << contents;}//用于输出字符串 mutable size_t access_ctr = 0; pos cursor = 0;//光标的位置 pos height = 0,width = 0;//屏幕的高度和宽度 std::string contents;//存储光标所在位置的字符};inline Screen& Screen::move(pos r, pos c){ pos row = r * width; cursor = row + c; return *this;}inline char Screen::get(pos r, pos c) const{ pos row = r * width; return contents[row + c];}inline Screen& Screen::set(char c){ contents[cursor] = c; return *this;}inline Screen& Screen::set(pos r, pos col, char ch){ contents[r*width + col] = ch; return *this;}
测试代码:
#include "Screen.h"#include <iostream>using std::cout;using std::endl;int main(){ Screen myScreen(5,5,'X'); myScreen.display(cout); cout << endl; cout << endl; myScreen.move(4,0).set('#').display(cout); cout << endl; return 0;}
1 0
- c++ primer 第五版 Screen类(包含Window_mgr类)
- c++ primer 第五版 Screen类(不包含Window_mgr类)
- c++primer 第五版
- C++Primer第五版【笔记】——第七章 类
- C++Primer 第五版 3.类设计者的工具
- 《C++primer(第五版)》学习之路-第七章:类
- C++primer第五版笔记-第七章类
- C++Primer(第五版) 习题答案
- 类多继承及包含练习(c++primer plus)
- 《C++ primer》第五版 练习7.32 报错:“error C2797: 'Window_mgr::screens': 未执行成员初始值列表内的列表初始化或非静态数据成员初始值”
- c++primer第五版课后练习答案(第五章)
- C++primer (第五版)第七章 类(有关类的相关定义)
- C++Primer第五版 第7章 类(练习解答)
- C Primer Plus 第五版
- 《C++primer第五版》第一章
- c++primer(第五版)3.17
- c++primer(第五版)3.19
- c++primer(第五版)3.21
- The hunt(狩猎)影评
- 【9-3】迭代dict的value
- 2013 带分数
- html不可不知的15条编码原则
- TensorFlow 简明教程(python版)
- c++ primer 第五版 Screen类(不包含Window_mgr类)
- LeetCode题解--9. Palindrome Number
- C# 客户端服务器学习(一)
- 【9-4】迭代dict的key和value
- 构造块/静态代码块
- 安卓TextView控件的显示和隐藏
- Java 理论与实践: 正确使用 Volatile 变量
- Java异常
- 设计模式(二十二)--桥接模式