C++模板类实现文件的操作

本文使用C++模板类实现对二进制文件的操作(注:因为模板类分离编译,所以只能将实现也放在头文件中):

1、概要:

(1)文件格式:存二进制格式,文件内的数据使用空格或者逗号分隔开;

(2)数据保存形式:使用c++二维容器进行保存;

(3)数据类型:主要包括3种:字符型、数字、字符串;

 

2、使用:

(1)运行环境:Linux,G++ 4.9.2;

(2)数据输入:将数据保存在./inDir/filename文件中,其中filename在程序调用的时候指定;

(3)数据输出:运行结果保存在./outDir/result.out文件中;

(4)使用方式:直接复制Myfile.h到程序路径下,include就行;

 

3、操作:主要包括获取文件数据,增、删、查、改

        Myfile(string filename);  //构造函数
        void addData(int row, int col, valueType data); //添加一个元素
        void addRowData(int row, t_vec data);       //添加一行元素
        void addColData(int col, t_vec data);       //添加一列元素
        void eraseData(int row, int col);  //删除一个元素
        void eraseRowData(int row);  //删除一行元素
        void eraseColData(int col);  //删除一列元素
        void alterData(int row, int col, valueType data); //修改一个元素
        void alterRowData(int row, t_vec data);       //修改一行元素
        void alterColData(int col, t_vec data);       //修改一列元素
        valueType getData(int row, int col); //根据位置返回数据
        t_vec getRowData(int row);  //返回第row行的数据
        t_vec getColData(int col);  //返回第col行的数据
        int getElementCount(valueType data);    //获取文件中值为data的个数
        void printData();           //打印数据
        void processFile();         //将文件处理成标准格式:首尾无空格,中间以空格隔开
        t_t_vec getFileData(){return fileData;}//返回文件数据
        int getRowNum();       //获取行号
        vector<int> getColNum();     //获取列号

4、模板类定义:

template <typename T> class Myfile
{
    public:
        typedef T valueType;
        typedef vector<valueType> t_vec;    //类型为valueType的容器
        typedef vector<t_vec> t_t_vec;      //类型为valueType的二维容器
        typedef typename vector<valueType>::iterator t_vec_iter; //第一个容器的迭代器
        typedef typename vector<t_vec>::iterator t_t_vec_iter;   //二维容器的迭代器

       
        Myfile(string filename);  //构造函数
        void addData(int row, int col, valueType data); //添加一个元素
        void addRowData(int row, t_vec data);       //添加一行元素
        void addColData(int col, t_vec data);       //添加一列元素
        void eraseData(int row, int col);  //删除一个元素
        void eraseRowData(int row);  //删除一行元素
        void eraseColData(int col);  //删除一列元素
        void alterData(int row, int col, valueType data); //修改一个元素
        void alterRowData(int row, t_vec data);       //修改一行元素
        void alterColData(int col, t_vec data);       //修改一列元素
        valueType getData(int row, int col); //根据位置返回数据
        t_vec getRowData(int row);  //返回第row行的数据
        t_vec getColData(int col);  //返回第col行的数据
        int getElementCount(valueType data);    //获取文件中值为data的个数
        void printData();           //打印数据
        void processFile();         //将文件处理成标准格式:首尾无空格,中间以空格隔开
        t_t_vec getFileData(){return fileData;}//返回文件数据
        int getRowNum(){return rowNum;}
        vector<int> getColNum(){return colNum;}

    private:
       string fileName;        //待操作文件的文件名
        t_t_vec fileData;           //文件中的数据
        int rowNum;             //行数
        vector<int> colNum;             //保存列数的容器
        void setRowColNum();
        void readFile();                //读取文件中所有的数据
};



5、程序源代码:http://download.csdn.net/detail/fengjiajun169/8368747

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值