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

来源:互联网 发布:app在线制作淘宝客 编辑:程序博客网 时间:2024/06/12 22:54

本文使用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

0 0
原创粉丝点击