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语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • 全面了解C语言 static 关键字

    全面了解C语言 static 关键字

    这篇文章主要介绍了全面了解C语言 static 关键字,文章首先通过先介绍一下头文件的创建展开主题的详细内容,需要的小伙伴可以参考一下
    2022-04-04
  • C++利用Socket实现主机间的UDP/TCP通信

    C++利用Socket实现主机间的UDP/TCP通信

    这篇文章主要为大家详细介绍了C++如何利用Socket实现主机间的UDP/TCP通信功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • C++文件关键词快速定位出现的行号实现高效搜索

    C++文件关键词快速定位出现的行号实现高效搜索

    这篇文章主要为大家介绍了C++文件关键词快速定位出现的行号实现高效搜索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 嵌入式C程序优质编写全面教程规范

    嵌入式C程序优质编写全面教程规范

    这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉
    2022-04-04
  • C语言中格式化输出符号%d、%c、%p、%x等详解

    C语言中格式化输出符号%d、%c、%p、%x等详解

    格式化输出在C语言中非常常用,提供了多种用法来控制输出的格式,下面这篇文章主要给大家介绍了关于C语言中格式化输出符号%d、%c、%p、%x等的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • C++实现RSA加密解密算法是示例代码

    C++实现RSA加密解密算法是示例代码

    非对称加密方式可以使通信双方无需事先交换密钥就可以建立安全通信,因此被广泛应用于身份认证、数字签名、等信息交换领域。其中最具有代表性的非对称加密方式就是RSA公钥密码体制。本文将用C++实现RSA加密解密算法,需要的可以参考一下
    2022-09-09
  • VScode + keil开发环境搭建安装使用过程

    VScode + keil开发环境搭建安装使用过程

    这篇文章主要介绍了VScode + keil开发环境搭建及安装使用过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • C++实现猜数字游戏

    C++实现猜数字游戏

    这篇文章主要为大家详细介绍了C++实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 纯C语言:分治快速排序源码分享

    纯C语言:分治快速排序源码分享

    这篇文章主要介绍了分治快速排序源码,有需要的朋友可以参考一下
    2014-01-01

最新评论