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  文件即可

总结

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

相关文章

  • Linux/C++多线程实例学习十字路口车辆调度

    Linux/C++多线程实例学习十字路口车辆调度

    这篇文章主要为大家介绍了Linux/C++多线程实例学习十字路口车辆调度示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • VC++的combobox控件用法汇总

    VC++的combobox控件用法汇总

    这篇文章主要介绍了VC++的combobox控件用法,对VC++初学者来说尤为重要,需要的朋友可以参考下
    2014-08-08
  • Qt利用QXlsx库操作Excel表格的应用全解析

    Qt利用QXlsx库操作Excel表格的应用全解析

    这篇文章主要为大家系统梳理了 Qt 生态中几种主流 Excel 操作方案,例如QXlsx、QAxObject、LibXL、ODBC,有需要的小伙伴可以跟随小编一起学习一下
    2025-10-10
  • QT判断两个日期时间的大小

    QT判断两个日期时间的大小

    本文主要介绍了QT判断两个日期时间的大小,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • C语言实现十六进制与二进制的相互转换

    C语言实现十六进制与二进制的相互转换

    这篇文章主要为大家详细介绍了如何利用c语言实现将文件中十六进制数据与二进制数据相互转换,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以学习一下
    2022-11-11
  • C++的指针,引用和STL详解

    C++的指针,引用和STL详解

    这篇文章主要为大家详细介绍了C++的指针,引用和STL,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • linux下实现的2048游戏示例分享

    linux下实现的2048游戏示例分享

    这篇文章主要介绍了linux下实现的2048游戏示例,需要的朋友可以参考下
    2014-04-04
  • 深入理解c++常成员函数和常对象

    深入理解c++常成员函数和常对象

    下面小编就为大家带来一篇深入理解c++常成员函数和常对象。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2016-05-05
  • C++实现简单扫雷小游戏

    C++实现简单扫雷小游戏

    这篇文章主要为大家详细介绍了C++实现简单扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • C语言运算符深入探究优先级与结合性及种类

    C语言运算符深入探究优先级与结合性及种类

    C语言运算符号指的是运算符号。C语言中的符号分为10类:算术运算符、关系运算符、逻辑运算符、位操作运算符、赋值运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符和特殊运算符
    2022-05-05

最新评论