




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件的創建與寫入1、創建二進制文件指針#include<fstream>ofstreamfout("文件名",ios::out|ios::binary);//輸出ofstreamfout;fout.open("文件名",ios::out|ios::binary); 2、ctrl+z結束輸入while(cin>>name>>no>>score){ fout.write(reinterpret_cast<constchar*>(&stud),sizeof(studscore));
cout<<"?:";}3、關閉文件outFile.close();第11講二進制文件的創建與寫入1、創建二進制文件指針#include<fstream>ofstreamfout("文件名",ios::out|ios::binary);2、ctrl+z結束輸入,定長故不要分隔與換行while(cin>>name>>no>>score){ fout.write(reinterpret_cast<constchar*>(&stud),sizeof(studscore));cout<<"?:";}3、關閉文件fout.close();第11講二進制文件的創建與寫入cin>>stud重載后>>一次輸入一個對象reinterpret_cast<constchar*>解釋為char
從而一次保存一個對象,與編譯器相關第11講二進制文件的創建與寫入第11講二進制文件的創建與寫入二進制或隨機文件定長,只能基礎類型與數組為讓重載友元符號,引用private成員,需要先寫類頭與函數頭第11講二進制文件的創建與寫入為了簡化只提供析構、構造與求總評函數,set/get無,對照此可適當增加第11講二進制文件的創建與寫入returnmout與returnmcin,為了能連續給后面的變量賦值或輸出。運算符重載,只針對自定義類。friend函數僅用在重載中基本數據類型與數組幾乎不用!第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件
1、ofstreamoF("文件名",ios::out|ios::binary);//輸出ifstreamoF("lt1.txt",ios::app|ios::binary);//追加ofstreamoF("lt1.txt",ios::ate|ios:binary);//尾追或中插ifstreamoF("lt1.txt",ios::in|ios::binary);//輸入ofstreamoF("lt1.txt",ios::trunc);//丟棄現在內容=outfstreamoF("lt1.txt",ios::binary);//二進制即非文本2、if(!oF){cerr<<"文件不能打開"<<endl;exit(1);}3
fin.read(reinterpret_cast<char*>(&obj),sizeof(類名));while(fin&&!fin.eof()){cout<<obj;
fin.read(reinterpret_cast<char*>(&obj),sizeof(類名));}第11講二進制文件-顯示第11講二進制文件
二進制或隨機文件定長,只能基礎類型與數組為讓重載友元符號,引用private成員,需要先寫類頭與函數頭第11講二進制文件
為了簡化只提供析構、構造與求總評函數,set/get無,對照此可適當增加第11講二進制文件
returnmout與returnmcin,為了能連續給后面的變量賦值或輸出。運算符重載,只針對自定義類。friend函數僅用在重載中基本數據類型與數組幾乎不用!第11講二進制文件
1、逆序讀取數據:記錄數:fseekg(0,ios::end);size=fin.tellg()/sizeof(類名)從size-1到0顯示,fin.seekg(0,i*sizeof(類名))2、相關知識文件尾eof()函數,seekp(0)—seekput位置即輸出位置fin.seekg(0)回到起始位置fin.seekg(n)=fin.seekg(n,iso::beg)fin.seekg(n,ios::cur)n<0回n>0下fin.seekg(-n,ios::end)從end往回n個字節fin.seekg(0,ios::end)定在最后位置seekp()類似longlocation=fin.tellg();返回當前位置第11講二進制文件-逆序顯示第11講二進制文件
二進制或隨機文件定長,只能基礎類型與數組為讓重載友元符號,引用private成員,需要先寫類頭與函數頭第11講二進制文件
為了簡化只提供析構、構造與求總評函數,set/get無,對照此可適當增加第11講二進制文件returnmout與returnmcin,為了能連續給后面的變量賦值或輸出。運算符重載,只針對自定義類。friend函數僅用在重載中基本數據類型與數組幾乎不用!第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件-追加1、fstreamfp("文件",ios::out|ios::binary|ios::in);fp.fseekp(0,ios::end);fp.write(reinterpret_cast<char*>(&obj),nLenStud);先寫到尾部,再讀出整個文件的內容2、fp.clear();fp.seekg(0,ios::beg); //清尾回首
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));while(!fp.eof()){//為什么不能fp&&cout<<obj;
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));}第11講二進制文件-追加StudScore.h與StudScore.cpp見前例第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件-修改1、fstreamfp("文件",ios::out|ios::binary|ios::in);fp.fseekp((i0-1)*nLenStud,ios::end);//定位指定記錄fp.write(reinterpret_cast<char*>(&obj),nLenStud);寫到指定位置覆蓋舊記錄,再讀出整個文件2、fp.clear();fp.seekg(0,ios::beg); //清尾回首
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));while(!fp.eof()){//為什么不能fp&&cout<<obj;
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));}第11講二進制文件StudScore.h與StudScore.cpp見前例第11講二進制文件第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件-查詢1、fstreamfp("文件",ios::binary|ios::in);讀出每條記錄,依次與指定的姓名比較,若是指定對象,則寫入ostringstream對象中并返回2、ostringstreammout;
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));while(!fp.eof()){if(pare(findVal)==0){mout<<"`"<<obj;}
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));}stringsmout=string(mout.str());char*csmout=newchar[smout.size()];strcpy(csmout,smout.substr(1).c_str());char*s1=strtok(csmout,"`");//輸出字符串第11講二進制文件-查詢mout<<obj重載了<<,輸出7元素的值第11講二進制文件第11講二進制文件-查詢第11講二進制文件-查詢第11講二進制文件1、fstreamfp("文件",ios::binary|ios::in);讀出每條記錄,依次與指定的姓名比較,若是指定對象,則寫入ostringstream對象中并返回2、ostringstreammout;
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));while(!fp.eof()){if(pare(findVal)==0){mout<<"`"<<obj;}
fp.read(reinterpret_cast<char*>(&obj),sizeof(類名));}3、按studno、coursename類似,find(findVal)>=0或rfind(findVal)可模糊查詢4、ps1,ps2,examend,totalscore則在[x1,x2]之間查第11講二進制文件-查詢第11講二進制文件第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件插入1、
fstreamfp("文件",ios::binary|ios::in);2、將原文件Lt100.bin改名Lt100bak.bin將Lt100bak.in文件數據讀入到變量中,與指定學號不相等的記錄,直接寫入到Lt100.bin,與指定學號相等則先寫入待插入記錄到Lt100.bin中,再寫入讀出的記錄到Lt100.bin中。
第11講二進制文件-插入第11講二進制文件第11講二進制文件第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件刪除1、
fstreamfp("文件",ios::binary|ios::in);2、將原文件Lt100.bin改名Lt100bak.bin將Lt100bak.in文件數據讀入到變量中,與指定學號不相等的記錄,直接寫入到Lt100.bin,與指定學號相等則不做任何處理。
第11講二進制文件
第11講二進制文件第11講二進制文件第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件1、ofstreamoF("文件名",ios::out);//接受它人輸出ifstreamoF("lt1.txt",ios::in);//將內容輸入變量中將文件數據讀入到變量中,將排序字段studno的值讀入到數組studNo中。為此先遍歷數據表一次,獲取其記錄數,再創建其數組,再從頭讀到尾建立相關數組。根據關鍵字段排序,同時調用記錄數組最后將排序結果寫入到結果文件中
原文件-->輸入到數組--->輸出到新文件Lt10N第11講二進制文件第11講二進制文件第11講二進制文件第11講-文件1、二進制文件的創建與寫入2、二進制文件的讀取3、二進制文件的追加4、二進制文件的修改5、二進制文件的查詢6、二進制文件的插入7、二進制文件的刪除8、二進制文件的排序9、二進制文件的索引與快速查找第11講二進制文件1、ifstreamfinIdx("lt1Indx.txt",ios::in);//索引文件ifstreamfinData("lt1.bin",ios::in|ios::binary);//數據文件2、
索引文件-->輸入到索引數組--->
數據文件---顯示出來第11講二進制文件第11講二進制文件第11講二進制文件第11講二進制文件1、ofstreamoF("文件名",ios::out);//接受它人輸出ifstreamoF("lt1.txt",ios::in);//將內容輸入變量中將文件數據讀入到變量中,將排序字段studno的值讀入到數組studNo,。為此先遍歷數據表一次,獲取其記錄數,再創建其數組,再從頭讀到尾建立相關數組。根據關鍵字段排序,同時調用記錄數組最后將排序結果寫入到結果文件中
索引文件-->輸入到索引數組--->
數據文件---顯示出來,二分法查詢學號第11講二進制文件1、ifstreamfinIdx("lt1Indx.txt",ios::in);//索引文件ifstreamfinData("lt1.bin",ios::in|ios::binary);//數據文件2、
索引文件-->輸入到索引數組--->
數據文件---不是全部顯示出來二分法找出指定的學號根據相應的記錄號顯示數據第11講二進制文件第11講二進制文件第11講二進制文件1、整合成一個小系統
在類StudScore的基礎上,得到StudScoreFile2、按姓名findByEqName(stringfn,stringfindVal)
按課程findByEqKc(strngfn,stringfindVal)
按ps1查findByPs1(stringfn,doubleps1)按ps2查findByPs2(stringfn,doubleps2)按examend查findByExamend(stringfn,doubleps2)按totalScore
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年下沉市場消費金融發展趨勢與應對策略分析報告
- 藥品車間現場管理制度
- 藥學信息人員管理制度
- 藥店庫房養護管理制度
- 藥店藥品調劑管理制度
- 營運內控基礎管理制度
- 設備保養檢查管理制度
- 設備備件集中管理制度
- 設備報廢更新管理制度
- 設備檢修進度管理制度
- 山東省菏澤市鄄城縣2023-2024學年七年級下學期7月期末英語試題
- 國際法(第七版) 課件 第九章 外交和領事關系法
- 國家開放大學本科《會計實務專題》形考作業一至四試題及答案
- 2024年哈爾濱鐵道職業技術學院單招職業適應性測試題庫各版本
- 水表檢定記錄全冊
- 安徽省合肥市廬陽區2022-2023學年五年級下學期期末科學試卷
- DG-TJ08-2411-2023 地下結構隔排水主動抗浮技術標準
- 三期(孕期、產期、哺乳期)員工風險評估
- 國家開放大學《土地利用規劃》本章自測參考答案
- 多重耐藥菌相關知課件
- 競選車間班長的演講稿
評論
0/150
提交評論