C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C++类模板及保存数据到文件

C++类模板以及保存数据到文件方式

作者:喜欢干饭的小白

这篇文章主要介绍了C++类模板以及保存数据到文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

C++类模板及保存数据到文件

题目要求

写一个类模板,它有一个通用数组(既可作整数数组,又可作双精度小数数组,

它有三个成员函数,

其功能分别是,从键盘读取数据到数组、将数组数据保存到某个文件中、求数组中的最大元素。

代码实现

#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
template <class T>
class MyArray
{
public:
    /*从键盘读数据到数组*/
    void readData(int n)
    {
        cout<<"请输入数组:"<<endl;
        for(int i = 0;i<n; i++)
        {
            cin>>arr[i];
        }
        cout<<"输入完毕!"<<endl;
    };
    /*将数组数据保存到文件中*/
    void saveFile(int n)
    {
        ofstream file;
        file.open("xie.txt", ios::in);//打开文件,可以指定位置,在双引号里加 D:\\C++语言测试\\xie.txt
        if(!file)
        {
            cout<<"xyz.txt cannot open"<<endl;
            abort();//用于中止当前进程。 对于异常的程序终止–我们可以使用abort()函数 。
        }
        for (int i = 0; i < n; i++)
            file << i << "  " << fixed << setprecision(8) << arr[i] << endl;//fixed << setprecision(8)是为了保留小数点后8位进行写入
        file.close();//关闭文件,保存文件。
        cout<<"已保存到文件中"<<endl;
    };
    /*求数组中的最大元素*/
    void maxArray(int n)
    {
        T maxNum = arr[0];
        for(int i = 1;i<n;i++)
            if(arr[i] > maxNum)
                maxNum = arr[i];
        cout<<"max: "<<maxNum<<endl;
    }
private:
    T arr[20];//定义一个通用数组,也就是说可以存储整数数组,也可以存储浮点数数组等等
};
int main()
{
    cout<<"------------------------传入整数数据---------------------------"<<endl;
    MyArray<int> myarray1;
    myarray1.readData(5);
    myarray1.saveFile(5);
    myarray1.maxArray(5);
    cout<<"------------------------传入小数数据---------------------------"<<endl;
    MyArray<double> myarray2;
    myarray2.readData(5);
    myarray2.saveFile(5);
    myarray2.maxArray(5);
    return 0;
}

C++(文件,模板,类模板)知识点

1.文件操作

类对象:ofstream,  ifstream,  fstream。

第一步:打开文件:fd.open("teat.txt",ios::in | ios::out)

第二步:操作读写:内部含有流的读写指针(偏移)seek

写:块  write  格式化 fprintf    << 行 fputs   字符  putc

读:块  read   格式化 fscanf    <<  行 fgets  getline  字符  getc

判断结尾:eof

流缓存区刷新:flush

2.模板

本质:使用一个万能的虚拟类型

单类定义:template  <class  类型名称>

多类定义:template  <class  类型名称1,class  类型名称2>

多个虚拟类型则使用逗号隔开。注意:虚拟类型

3.类模板

作用:建立一个通用类,类中的额成员数据类型可以不具体指定用一个虚拟的类型来代表

本质:使用一个万能的虚拟类型

单类定义:template  <class  类型名称>

多类定义:template  <class  类型名称1,class  类型名称2>

多个虚拟类型则使用逗号隔开。

注意事项:

(1)虚拟类型只有后一句代码有效(if,for,while)

(2)实例化模板类的时候必须使用  <类型> 置顶显示类型

(3)模板那类成员类外实现的时候需要加上虚拟类型声明才可以

(4)模板函数的创建时机——(运行)调用的时候

(5)类模板尽量不要分文件编写。

如果硬要分文件编写则只能引入源文件,不能引入头文件。

如果我们定义一个  .hpp  的文件存放模板类的所有代码直接引入  .hpp  文件即可

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文