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();//用于中止當(dāng)前進(jìn)程。 對于異常的程序終止–我們可以使用abort()函數(shù) 。 } for (int i = 0; i < n; i++) file << i << " " << fixed << setprecision(8) << arr[i] << endl;//fixed << setprecision(8)是為了保留小數(shù)點后8位進(jìn)行寫入 file.close();//關(guān)閉文件,保存文件。 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
判斷結(jié)尾:eof
流緩存區(qū)刷新:flush
2.模板
本質(zhì):使用一個萬能的虛擬類型
單類定義:template <class 類型名稱>
多類定義:template <class 類型名稱1,class 類型名稱2>
多個虛擬類型則使用逗號隔開。注意:虛擬類型
3.類模板
作用:建立一個通用類,類中的額成員數(shù)據(jù)類型可以不具體指定用一個虛擬的類型來代表
本質(zhì):使用一個萬能的虛擬類型
單類定義:template <class 類型名稱>
多類定義:template <class 類型名稱1,class 類型名稱2>
多個虛擬類型則使用逗號隔開。
注意事項:
(1)虛擬類型只有后一句代碼有效(if,for,while)
(2)實例化模板類的時候必須使用 <類型> 置頂顯示類型
(3)模板那類成員類外實現(xiàn)的時候需要加上虛擬類型聲明才可以
(4)模板函數(shù)的創(chuàng)建時機(jī)——(運行)調(diào)用的時候
(5)類模板盡量不要分文件編寫。
如果硬要分文件編寫則只能引入源文件,不能引入頭文件。
如果我們定義一個 .hpp 的文件存放模板類的所有代碼直接引入 .hpp 文件即可
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++利用Socket實現(xiàn)主機(jī)間的UDP/TCP通信
這篇文章主要為大家詳細(xì)介紹了C++如何利用Socket實現(xiàn)主機(jī)間的UDP/TCP通信功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索
這篇文章主要為大家介紹了C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10嵌入式C程序優(yōu)質(zhì)編寫全面教程規(guī)范
這是一年前我為公司內(nèi)部寫的一個文檔,旨在向年輕的嵌入式軟件工程師們介紹如何在裸機(jī)環(huán)境下編寫優(yōu)質(zhì)嵌入式C程序。感覺是有一定的參考價值,所以拿出來分享,拋磚引玉2022-04-04VScode + keil開發(fā)環(huán)境搭建安裝使用過程
這篇文章主要介紹了VScode + keil開發(fā)環(huán)境搭建及安裝使用過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07