亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? screen.cpp

?? C++ Primer(第三版)的隨書源代碼
?? CPP
字號:
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;

#include "screen.h"

// --------------------------
// Screen static data members
// --------------------------

Screen::Action Screen::Menu[] = {
        &Screen::home,
        &Screen::forward,
        &Screen::back,
        &Screen::up,
        &Screen::down,
        &Screen::end
};

// -----------------------
// Screen member functions
// -----------------------

Screen::Screen( const Screen &sobj )
{
        // if this Screen object and sobj are the same object,
        // no copy necessary
        if ( this != &sobj )
        {
                _height = sobj._height;
                _width = sobj._width;
                _cursor = 0;

                // creates a new string;
                // its content is the same as sobj._screen
                _screen = sobj._screen;
        }
}

Screen& Screen::move( int r, int c )
{ // move _cursor to absolute position
        if ( checkRange( r, c ) ) // valid screen position?
        {
                int row = (r-1) * _width; // row location
                _cursor = row + c - 1;
        }

	return *this;
}

Screen& Screen::move( CursorMovements cm )
{
        ( this->*Menu[ cm ] )();
        return *this;
}

Screen& Screen::clear( char bkground )
{ // reset the cursor and clear the screen

        _cursor = 0;
        _screen.assign(       // assign the string
                _screen.size(),    // with size() characters
                bkground           // of value bkground
        );

        // return the object for which the function was invoked
        return *this;
}

char Screen::get( int r, int c )
{
        move( r, c ); // position _cursor
        return get(); // the other get() member function
}

Screen& Screen::set( char ch ) 
{
        if ( ch == '\0' )
                cerr << "Screen: warning: "
                     << "null character (ignored).\n";
        else _screen[_cursor] = ch;

        return *this;
}

Screen& Screen::set( const string &s )
{ // write string beginning at current _cursor position

        int space = remainingSpace();
        int len = s.size();
        if ( space < len ) {
                cerr << "Screen: warning: truncation: "
                     << "space: " << space
                     << "string length: " << len << endl;
                len = space;
        }

        _screen.replace( _cursor, len, s );
        _cursor += len - 1;

        return *this;
}

Screen& Screen::forward()
{ // advance _cursor one screen element

        ++_cursor;

        // check for end of screen; wrap around
        if ( _cursor == _screen.size() )
                home();

        return *this;
}

Screen& Screen::back()
{ // move _cursor backward one screen element

        // check for top of screen; wrap around
        if ( _cursor == 0 )
                end();
        else
                --_cursor;

        return *this;
}

const char BELL = '\007';

Screen& Screen::up()
{ // move _cursor up one row of screen
  // do not wrap around; rather, ring bell

        if ( row() == 1 ) // at top?
                cout << BELL << endl;
        else
                _cursor -= _width;

        return *this;
}

Screen& Screen::down()
{
        if ( row() == _height ) // at bottom?
                cout << BELL << endl;
        else
                _cursor += _width;

        return *this;
}

Screen& Screen::repeat( Screen::Action op, int times )
{
        for ( int i = 0; i < times; ++i )
                (this->*op)();
        return *this;
}

Screen& Screen::reSize( int h, int w, char bkground )
{ // resize a screen to height h and width w

        // remember the content of the screen
        string local(_screen);

        // replaces the string to which _screen refers
        _screen.assign(     // assign the string
                h * w,           // with h * w characters
                bkground         // of value bkground
        );

        typedef string::size_type idx_type;
        idx_type local_pos = 0;

        // copy content of old screen into the new one
        for ( idx_type ix = 0; ix < _height; ++ix )
        { // for each row

                idx_type offset = w * ix; // row position
                for ( idx_type iy = 0; iy < _width; ++iy )
                        // for each column, assign the old value
                        _screen[ offset + iy ] = local[ local_pos++ ];
        }

        _height = h;
        _width = w;
        // _cursor remains unchanged

        return *this;
}

Screen& Screen::display()
{
        typedef string::size_type idx_type;

        for ( idx_type ix = 0; ix < _height; ++ix )
        { // for each row

                idx_type offset = _width * ix; // row position

                for ( idx_type iy = 0; iy < _width; ++iy )
                        // for each column, write element
                        cout << _screen[ offset + iy ];

                cout << endl;
        }
        return *this;
}

bool Screen::checkRange( int row, int col )
{ // validate coordinates
        if ( row < 1 || row > _height ||
             col < 1 || col > _width ) {
                cerr << "Screen coordinates ( "
                     << row << ", " << col
                     << " ) out of bounds.\n";
                return false;
        }
        return true;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合在线播放| 最近中文字幕一区二区三区| 欧美电视剧免费观看| 精品国产网站在线观看| 精品久久久久久久久久久久久久久久久 | 一个色妞综合视频在线观看| 久久久久国产精品麻豆ai换脸| 久久午夜老司机| 国产精品一区二区久久不卡 | 精品久久久久久久久久久久包黑料| 欧美日韩精品综合在线| 成人av在线电影| 成人av高清在线| 国产福利一区二区三区视频在线| 高清国产午夜精品久久久久久| av资源网一区| 欧美挠脚心视频网站| 日韩欧美色综合网站| 中文字幕第一区综合| 一区二区三区在线视频观看 | 午夜成人免费视频| 日欧美一区二区| 国产精品69毛片高清亚洲| 成人av高清在线| 色婷婷亚洲精品| 久久久99精品免费观看不卡| 日韩视频免费直播| 久久久精品黄色| 有坂深雪av一区二区精品| 精品亚洲成av人在线观看| www.av精品| 欧美大片拔萝卜| 亚洲视频一区二区免费在线观看| 亚洲六月丁香色婷婷综合久久| 激情综合五月天| 成人av在线资源网| 91精品蜜臀在线一区尤物| 欧美激情一区不卡| 亚洲精品国产高清久久伦理二区| 日韩av一级电影| 成人中文字幕在线| 91精品黄色片免费大全| 国产农村妇女精品| 日本不卡在线视频| 不卡欧美aaaaa| 欧美精选在线播放| 中文字幕中文字幕一区| 秋霞影院一区二区| 国产麻豆精品95视频| 欧美撒尿777hd撒尿| 日韩毛片精品高清免费| 欧美bbbbb| 91福利在线观看| 国产欧美一区视频| 日韩综合小视频| 在线日韩av片| 久久久久国产精品免费免费搜索| 午夜精品福利一区二区三区蜜桃| 9色porny自拍视频一区二区| 国产视频一区在线观看| 免播放器亚洲一区| 色乱码一区二区三区88| 一色桃子久久精品亚洲| 久草在线在线精品观看| 欧美日韩精品一区二区三区四区| 国产精品免费视频网站| 久久精品国产精品亚洲精品| 色悠悠久久综合| 国产精品你懂的| 国产精品亚洲第一区在线暖暖韩国 | 国产91精品免费| 日韩一区二区精品在线观看| 亚洲激情五月婷婷| 成人丝袜高跟foot| 久久久另类综合| 免费av网站大全久久| 欧美一级xxx| 五月激情综合网| 不卡的电视剧免费网站有什么| 国产亚洲精久久久久久| 美美哒免费高清在线观看视频一区二区| 欧美日本乱大交xxxxx| 一区二区国产盗摄色噜噜| 色婷婷久久久亚洲一区二区三区| 国产日产欧产精品推荐色| 国产精品一二二区| 欧美精品一区二区三区高清aⅴ | 日日夜夜精品视频免费| 欧美日韩一区高清| 亚洲精品中文字幕乱码三区| 成人成人成人在线视频| 国产精品理伦片| 丰满白嫩尤物一区二区| xnxx国产精品| 美女视频网站久久| 日韩欧美在线影院| 日本大胆欧美人术艺术动态| 9191久久久久久久久久久| 亚洲一区二区三区不卡国产欧美| 91传媒视频在线播放| 一区二区三区免费观看| 91久久一区二区| 亚洲精选免费视频| 在线观看日韩电影| 日韩一区有码在线| 99久久精品国产一区| 国产精品欧美一区喷水| jiyouzz国产精品久久| 亚洲欧美综合色| 色婷婷综合久色| 亚洲第一成人在线| 欧美日韩不卡一区二区| 日韩成人免费在线| 欧美一区二区三区不卡| 奇米一区二区三区av| 欧美成人三级电影在线| 国产精一区二区三区| 中国av一区二区三区| 97成人超碰视| 亚洲伊人伊色伊影伊综合网| 欧美人与z0zoxxxx视频| 麻豆91精品视频| 久久久精品国产免费观看同学| 国产成人av电影免费在线观看| 亚洲欧洲国产专区| 欧美综合亚洲图片综合区| 日本亚洲欧美天堂免费| 日韩区在线观看| 国产精品99久久久| 亚洲美女屁股眼交3| 欧美日韩亚洲综合| 久久成人免费网| 国产精品美女久久福利网站| 在线亚洲欧美专区二区| 日本aⅴ精品一区二区三区| 久久综合狠狠综合久久综合88| 99视频在线精品| 一区二区三区免费| 国产亚洲精久久久久久| 一本色道亚洲精品aⅴ| 国产一区二区三区日韩| 色婷婷狠狠综合| 日韩一区二区电影| 最新中文字幕一区二区三区| 中文字幕中文字幕一区二区| 中文字幕免费不卡在线| 欧美一级欧美三级| 亚洲影视在线播放| 国产在线不卡视频| 色婷婷av一区| 欧美亚洲精品一区| 久久只精品国产| 亚洲五月六月丁香激情| 奇米色777欧美一区二区| 国产精品一线二线三线| 波多野结衣视频一区| 91亚洲精品一区二区乱码| 久久精品亚洲一区二区三区浴池 | 一区二区日韩电影| 成人亚洲一区二区一| 久久久久国产精品免费免费搜索| 亚洲第一搞黄网站| 51精品国自产在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 这里是久久伊人| 蜜臀av性久久久久蜜臀av麻豆| 欧美图区在线视频| 亚洲欧美色一区| 91精品国产综合久久久久久久久久| 亚洲午夜久久久久中文字幕久| 成年人国产精品| 亚洲啪啪综合av一区二区三区| 国产在线一区二区| 国产精品传媒视频| 欧美中文字幕久久| 亚洲h精品动漫在线观看| 精品国产三级电影在线观看| 成人免费毛片高清视频| 久久久国产精品麻豆| 91丨porny丨国产| 亚洲午夜三级在线| 欧美影视一区在线| 久久成人18免费观看| 欧美tickle裸体挠脚心vk| 国产精品综合网| 亚洲精品视频自拍| 国产69精品久久99不卡| 亚洲天堂a在线| 日本道精品一区二区三区| 久久精品视频在线看| 色综合咪咪久久| 日韩中文字幕麻豆| 日韩视频一区二区在线观看| 丁香五精品蜜臀久久久久99网站| 日韩综合小视频| 亚洲成人av电影在线| 国产目拍亚洲精品99久久精品| 日韩欧美久久一区| 欧美成人一级视频| 2020国产成人综合网|