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

 更新时间:2023年08月04日 09:52:38   作者:喜欢干饭的小白  
这篇文章主要介绍了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  文件即可

总结

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

相关文章

  • C语言如何建立链表并实现增删查改详解

    C语言如何建立链表并实现增删查改详解

    这篇文章主要给大家介绍了关于C语言如何建立链表并实现增删查改的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C语言具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • C++实践IP地址类项目参考

    C++实践IP地址类项目参考

    今天小编就为大家分享一篇关于C++实践IP地址类项目参考,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • C++ random_shuffle()方法案例详解

    C++ random_shuffle()方法案例详解

    这篇文章主要介绍了C++ random_shuffle()方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++错误使用迭代器超出引用范围问题及解决方案

    C++错误使用迭代器超出引用范围问题及解决方案

    这篇文章主要介绍了C++错误使用迭代器超出引用范围分析与解决,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • C语言正则表达式操作示例

    C语言正则表达式操作示例

    这篇文章主要介绍了C语言正则表达式操作,结合实例形式分析了C语言正则匹配类似邮箱格式功能的实现技巧,需要的朋友可以参考下
    2017-07-07
  • QT5实现简单的TCP通信的实现

    QT5实现简单的TCP通信的实现

    本文主要介绍了QT5实现简单的TCP通信的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 浅谈C++ Explicit Constructors(显式构造函数)

    浅谈C++ Explicit Constructors(显式构造函数)

    下面小编就为大家带来一篇浅谈C++ Explicit Constructors(显式构造函数)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C++用boost.signal实现多播委托

    C++用boost.signal实现多播委托

    这篇文章介绍了C++用boost.signal实现多播委托的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • C++ NFS挂载及挂载命令

    C++ NFS挂载及挂载命令

    这篇文章主要介绍了C++ NFS挂载,文中给大家提到了挂载NFS时常用的命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • C/C++实现树操作的实例代码

    C/C++实现树操作的实例代码

    这篇文章主要介绍了C/C++实现树操作的实例代码,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02

最新评论