| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 774 人关注过本帖
标题:设计一文件阅读器, 可以一次一屏(20或22行)显示文件内容, 每次显示完一屏内 ...
只看楼主 加入收藏
A514968885
Rank: 2
等 级:论坛游民
帖 子:2
专家分:10
注 册:2012-9-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
设计一文件阅读器, 可以一次一屏(20或22行)显示文件内容, 每次显示完一屏内容后, 提示使用者键入一控制字符以控制屏幕翻滚。如字符'n'显示下一屏, 字符'
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
class TxtReader
{
    private:        
        ifstream txtfile;
        static const int linesize;
        static const int rowsize;
        vector<fstream::streampos>screenpos;
    public:
        TxtReader(string name);
        void LastScreen();
        void NextScreen();
        void ShowContent();
        ~TxtReader();
};
const int TxtReader::linesize = 22; //一屏22行
const int TxtReader::rowsize = 70; //一行70个字符
TxtReader::TxtReader(string name)
{
   txtfile.open(name.c_str());;
    if(!txtfile)
    {
        cout << "Open file failed!" << endl;
        return;
    }
    screenpos.push_back(txtfile.tellg());
    ShowContent();
}
TxtReader::~TxtReader()
{
    txtfile.close();
}
void TxtReader::ShowContent()
{
    char tmp[rowsize+1];
    int line = 0;
    while((!txtfile.eof())&&(line!=linesize))
    {
        txtfile.getline(tmp, rowsize+1);
        line += 1;
        cout << tmp << endl;
    }
}
void TxtReader::NextScreen()
{
    if(txtfile.eof())
        return;
    screenpos.push_back(txtfile.tellg());
    ShowContent();
}
void TxtReader::LastScreen()
{
    if(screenpos.size() == 1)
        return;
    txtfile.seekg(screenpos.back());
    screenpos.pop_back();
    ShowContent();
}
int main()
{
    cout << "Input the file name to open:" << endl;
    string filename;
    cin >> filename;
    TxtReader reader(filename);
    char control;
    while(cin >> control)
    {
        if(control == 'n')
            reader.NextScreen();
        if(control == 'p')
            reader.LastScreen();
        if(control == 'q')
            break;
    }
}
这个运行不了 求帮助
搜索更多相关主题的帖子: public include private 阅读器 void 
2012-09-07 21:11
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
小白兰和你是同一个人吗?

https://bbs.bccn.net/thread-380840-1-1.html
2012-09-07 23:07
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
原则上不能重复发帖的。把你这个锁了还在原来的那个里讨论吧。
2012-09-07 23:08
快速回复:设计一文件阅读器, 可以一次一屏(20或22行)显示文件内容, 每次显示完一 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018887 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved