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 文件即可
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。