qq_45548366 2020-01-30 01:56 采纳率: 0%
浏览 336

c++primer第七章的screen类的坐标求值问题

c++ primer 5th中,7.3.1节引入的screen类,其中有个代码是获取指定位置光标的值,但是计算出来之后,和输入的参数有误差。
新手刚刚开始,求解答!谢谢谢
就是下列代码的第二个get和move函数,实际上得到的光标和要求的光标位置差了一行
例如初始化的screen是4,6,c 然后调用get求2,3坐标的值,虽然都是c,但是光标实际的位置不是在第三行上吗,并不是在我所要求的第二行上

class Screen{
public:
    using pos = std::string::size_type;

    Screen() = default;
    Screen(pos h , pos w) : height(h) , width(w) , contents(h*w , ' ') { }
    Screen(pos h , pos w , char ch) : height(h) , width(w) , contents(h*w , ch) { }
    //定义屏幕的尺寸和内容的构造函数

    char get() const  //读取当前光标的字符
    {
        return contents[cursor]; //隐式内联
    }

    inline char get(pos ht , pos wd) const; //显示的内联,读取光标字符

    Screen & move(pos r , pos c); //移动光标

private:
    std::string contents;
    pos cursor = 0;
    pos height = 0 , width = 0;
};

inline
Screen & Screen :: move(pos r , pos c)
{
    pos row = r * width;
    cursor = row + c;
    return *this;
}

char Screen :: get(pos r , pos c) const
{
    pos row = r * width;
    return contents[ row + c ];
}
  • 写回答

1条回答 默认 最新

  • threenewbee 2020-01-30 10:15
    关注

    这很正常,因为在编程语言中,从0开始编号是一种约定。如果你还习惯从1开始编号,说明你还没有进入程序员思维。

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题