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