C++類模板以及保存數(shù)據(jù)到文件方式
C++類模板及保存數(shù)據(jù)到文件
題目要求
寫一個類模板,它有一個通用數(shù)組(既可作整數(shù)數(shù)組,又可作雙精度小數(shù)數(shù)組,
它有三個成員函數(shù),
其功能分別是,從鍵盤讀取數(shù)據(jù)到數(shù)組、將數(shù)組數(shù)據(jù)保存到某個文件中、求數(shù)組中的最大元素。
代碼實現(xiàn)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
template <class T>
class MyArray
{
public:
/*從鍵盤讀數(shù)據(jù)到數(shù)組*/
void readData(int n)
{
cout<<"請輸入數(shù)組:"<<endl;
for(int i = 0;i<n; i++)
{
cin>>arr[i];
}
cout<<"輸入完畢!"<<endl;
};
/*將數(shù)組數(shù)據(jù)保存到文件中*/
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()函數(shù) 。
}
for (int i = 0; i < n; i++)
file << i << " " << fixed << setprecision(8) << arr[i] << endl;//fixed << setprecision(8)是為了保留小數(shù)點后8位進行寫入
file.close();//關閉文件,保存文件。
cout<<"已保存到文件中"<<endl;
};
/*求數(shù)組中的最大元素*/
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];//定義一個通用數(shù)組,也就是說可以存儲整數(shù)數(shù)組,也可以存儲浮點數(shù)數(shù)組等等
};
int main()
{
cout<<"------------------------傳入整數(shù)數(shù)據(jù)---------------------------"<<endl;
MyArray<int> myarray1;
myarray1.readData(5);
myarray1.saveFile(5);
myarray1.maxArray(5);
cout<<"------------------------傳入小數(shù)數(shù)據(jù)---------------------------"<<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)
第二步:操作讀寫:內(nèi)部含有流的讀寫指針(偏移)seek
寫:塊 write 格式化 fprintf << 行 fputs 字符 putc
讀:塊 read 格式化 fscanf << 行 fgets getline 字符 getc
判斷結尾:eof
流緩存區(qū)刷新:flush
2.模板
本質:使用一個萬能的虛擬類型
單類定義:template <class 類型名稱>
多類定義:template <class 類型名稱1,class 類型名稱2>
多個虛擬類型則使用逗號隔開。注意:虛擬類型
3.類模板
作用:建立一個通用類,類中的額成員數(shù)據(jù)類型可以不具體指定用一個虛擬的類型來代表
本質:使用一個萬能的虛擬類型
單類定義:template <class 類型名稱>
多類定義:template <class 類型名稱1,class 類型名稱2>
多個虛擬類型則使用逗號隔開。
注意事項:
(1)虛擬類型只有后一句代碼有效(if,for,while)
(2)實例化模板類的時候必須使用 <類型> 置頂顯示類型
(3)模板那類成員類外實現(xiàn)的時候需要加上虛擬類型聲明才可以
(4)模板函數(shù)的創(chuàng)建時機——(運行)調用的時候
(5)類模板盡量不要分文件編寫。
如果硬要分文件編寫則只能引入源文件,不能引入頭文件。
如果我們定義一個 .hpp 的文件存放模板類的所有代碼直接引入 .hpp 文件即可
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

