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++ 网络库asio的优势

    c++ 网络库asio的优势

    这篇文章主要介绍了c++ 网络库asio的优势,帮助大家更好的利用c++开发服务端程序,感兴趣的朋友可以了解下
    2020-10-10
  • qml中QtObject类型的用法小结

    qml中QtObject类型的用法小结

    QtObject 类型是一个非可视元素,仅包含objectName属性,如果需要一个非常轻量级的类型来包含一组自定义属性,那么创建一个QtObject,本文给大家介绍qml中QtObject类型的使用,感兴趣的朋友一起看看吧
    2024-01-01
  • C语言类型转换与常量的细节深入理解探究

    C语言类型转换与常量的细节深入理解探究

    这篇文章主要为大家介绍了C 语言类型转换与常量的细节深入理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 一文详解C语言中文件相关函数的使用

    一文详解C语言中文件相关函数的使用

    这篇文章主要为大家详细介绍了C语言中文件相关函数的使用,可以实现文件的读写、打开和关闭。文中通过示例进行了详细介绍,需要的可以参考一下
    2022-07-07
  • OpenCV实现图像腐蚀

    OpenCV实现图像腐蚀

    这篇文章主要为大家详细介绍了OpenCV实现图像腐蚀,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • 浅析C语言中assert的用法

    浅析C语言中assert的用法

    以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下
    2013-07-07
  • C语言 使用qsort函数来进行快速排序

    C语言 使用qsort函数来进行快速排序

    排序方法有很多种:选择排序,冒泡排序,归并排序,快速排序等。 看名字都知道快速排序是目前公认的一种比较好的排序算法。因为他速度很快,所以系统也在库里实现这个算法,便于我们的使用。 这就是qsort函数
    2022-02-02
  • C++实现简单的生产者-消费者队列详解

    C++实现简单的生产者-消费者队列详解

    这篇文章主要为大家详细介绍了如何利用C++实现一个简单的生产者-消费者队列,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • C语言实现学生选课系统

    C语言实现学生选课系统

    这篇文章主要为大家详细介绍了C语言实现学生选课系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • sublime text3搭建配置c语言编译环境的详细图解教程(小白级)

    sublime text3搭建配置c语言编译环境的详细图解教程(小白级)

    这篇文章主要介绍了sublime text3搭建配置c语言编译环境,详细图解,小白教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01

最新评论