版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
文件操作和異常第六章回憶輸出流插入操作符<<,cout.put(),cout.write輸出操縱符:進制問題,cout.setf()函數(shù)使用輸入流提取操作符>>cin.get()cin.getline()輸入操縱符目標文件輸入文件輸出異常處理文件輸入/輸出從文件讀取和寫入文件的過程獲得流是使用文件的先決條件添加頭文件fstream.h兩個根本類ifstream讀取文件ofstream寫入文件文件輸入/輸出相關流類庫iosistreamostreamiostreamifstreamofstreamfstream文件相關流流是一組字符或數(shù)據(jù)流的源或目的每個流都和一個特定的類相關ios類是流類層次結構的虛擬基類兩種流輸出流〔允許寫入或存儲字符〕輸入流〔允許讀取或提取字符〕三個流類ifstream類——用于文件輸出〔讀取到內存〕ofstream類——用于文件輸入〔從內存寫到文件〕fstream類——既可以讀又可以寫文件操作的根本步驟獲得流,在創(chuàng)立流的時候應該將流和文件相關。使用流提取和流插入的符號>><<進行操作文件操作可以實現(xiàn)讀取和寫入字節(jié)/二進制數(shù)據(jù)塊監(jiān)測文件結尾輸入流可以忽略字符支持隨機訪問文件流和控制臺流是等效的,可以重用插入函數(shù)和提取函數(shù)文件輸出——獲得流翻開文件方式一Ofstreamoutfile(“temp.txt”);創(chuàng)立了一個ofstream類的對象Temp.txt是要寫入的文件如果文件存在就刪除現(xiàn)有文件如果文件不存在,就創(chuàng)造一個新文件還可以有其他的處理方式翻開文件方式二ofstreamOpenFile;OpenFile.open(“cpp-home.txt”);文件輸出——獲得流voidmain(){ chara[10],b[10]; intnum; //ofstreamoutfile(“temp.txt”);//等效于下面2行。、、、//ofstream就是系統(tǒng)定義好的一個類,outfile是自定義的一個對象 ofstreamoutfile; outfile.open("temp.txt"); outfile.write("aaa",strlen("aaa"));//效果等同下面一句
outfile<<""<<"aaa"<<""<<33;//加上""才能分開輸入分開輸出 outfile.close();}文件輸出例如#include<fstream.h>voidmain(){ char*name="QWERTYPOIUYT"; intage=49; floatsalary=600.123f;
ofstreamfout(“TEST.TXT”);//或者c:\\test.txt fout<<"此行寫入了TEST.TXT中\(zhòng)n";fout<<name<<""<<age<<""<<salary;fout.close();}文件輸出——其他例如ofstream從iostrearn類派生且所有iostream操作都可以應用到一個ofstream類對象上例如charch='';ofstreamoutFile("a.txt");outFile.put('1').put(')').put(ch);outFile<<"1+1="<<(1+1)<<endl;向outfile中插入1)1+1=2文件輸入——獲得流istream包含為輸入操作〔流提取〕定義的函數(shù)創(chuàng)立一個ifstream類的對象,使用流提取操作符(>>)讀取來自該對象的輸入ifstreamfin(“temp.txt”);創(chuàng)立了一個ifstream類的對象,翻開test.txt進行讀取文件輸入例如(1)#include<fstream.h>voidmain(){ ifstreamfin(“TEST.TXT”);//讀取此文件的信息 charline[100]; charname[50]; intage; floatsalary; fin>>line; fin>>name>>age>>salary; cout<<line<<endl; cout<<name<<""<<age<<""<<salary<<endl; fin.close();}文件輸入例如(2)#include<fstream.h>voidread(ifstream&T){charch;while(!T.eof()){ T.get(ch); cout<<ch;} cout<<endl<<"--------"<<endl;}voidmain(){ifstreamT("a.cpp");//每一個輸入文件實例化一個ifstream類的對象read(T);T.close();T.open("fa.cpp");read(T);T.close();
}文件輸入/輸出fstream包含文件輸入/輸出中使用的類的定義 #include<fstream.h>在一個需要文件輸入/輸出的程序中每一個輸出文件實例化一個ofstream類的對象每一個輸入文件實例化一個ifstream類的對象ofstream對象的使用和cout對象完全一樣ifstream對象的使用和cin對象是完全一樣文件輸入/輸出——翻開模式打開模式含義ios::out打開以進行寫入ios::in打開以進行讀取ios::ate在打開時查找到文件結尾ios::app追加到文件結尾ios::trunc如果文件存在則刪除ios::nocreate如果文件不存在則打開失敗ios::replace如果文件已存在則打開失敗ios::binary打開一個二進制文件文件輸入/輸出例如翻開一個文件并刪除所有內容 ofstreamfout("TEST.TXT"); ofstreamfout("TEST.TXT",ios::out); ofstreamfout(“TEST.TXT”,ios::out|ios::trunc);//默認情況如果文件存在那么刪除翻開一個文件并追加內容 ofstreamfout("TEST.TXT",ios::app);翻開一個文件進行二進制輸出 ofstreamfout("TEST.TXT",ios::binary);文件輸入/輸出例如fstreamf;f.open(“文件名”,翻開方式)f.close()While(!f.eof()){//繼續(xù)讀取文件}//在輸入的時候有用例如文件輸入/輸出例如#include<fstream.h>voidmain(){ fstreamFile("c:\\test.txt",ios::in|ios::out);
File<<"Hi!";//將“Hi!”寫入文件
staticcharstr[10];//當使用static時,數(shù)組會自動被初始化 //即是被清空為零
File.seekg(ios::beg);//回到文件首部 File>>str; cout<<str<<endl; File.close();}隨機訪問——兩個管理讀寫位置的指針get和put指針分別指定讀和寫操作的當前位置get:從設備到內存,稱之為讀,管理輸入的位置put:從內存到設備,稱之為寫,管理輸出的位置每次執(zhí)行輸入或輸出操作時,這兩個指針都按一定順序自動移動隨機訪問——兩對管理指針的方法
seekg()和tellg()函數(shù)可用來控制get指針seekp()和tellp()函數(shù)對put指針進行類似的操作seekg()和seekp(),用來在輸入輸出的時候隨機定位使用tellg()和tellp()函數(shù)在文件中查找get和put指針的當前位置隨機訪問例如——Seekg()和tellp()Seekg()的例如seekg()使用兩個參數(shù)要移動的字節(jié)數(shù)文件中重定位指針時的參考位置Ifstreamfin;fin.seekg(10,ios::beg);//get指針在離文件頭10個字節(jié)的位置Ios::beg——文件的開頭Ios::cur——文件指針的當前位置Ios::end——文件的結尾tellg()的例如Ofstreamfout(“text.txt”,ios::ate);Cout<<fout.tellp();//打印寫指針的位置二進制訪問例如#include<fstream.h>voidmain(){ fstreamFile("test_file.txt",ios::out|ios::in|ios::binary); charch; ch='o'; charch2; File.put(ch);//將ch的內容寫入文件 File.seekg(ios::beg);//定位至文件首部 File.get(ch2);//讀出一個字符 cout<<ch2<<endl;//將其顯示在屏幕上 File.close();}tellg()函數(shù)例如#include<fstream.h>voidmain(){ //假設我們已經(jīng)在test_file.txt中存有“Hello”的內容 ifstreamFile("test.txt"); chararr[10]; File.read(arr,7); //這里將返回7 arr[7]='\0'; cout<<arr; cout<<File.tellg()<<endl; File.close();}異常異常是在運行時發(fā)生的錯誤事件發(fā)生異常時,C++作出如下反響產(chǎn)生異常的函數(shù)產(chǎn)生系統(tǒng)定義的消息函數(shù)徹底終止函數(shù)可能跳過中間級別繼續(xù)處理另一局部異常與錯誤異常是在執(zhí)行程序的過程中出現(xiàn)的錯誤或異常情況(運行時)錯誤是指在編寫和編譯程序時存在的問題邏輯錯誤語法錯誤異常處理異常處理的實現(xiàn)為try塊,也稱為監(jiān)視局部throw表達式,指示異常的種類拋出一個值,一個字符串或一個對象catch處理程序,在發(fā)生異常時執(zhí)行異常處理例如#include<iostream.h>intmain(){try{intage;cout<<"請輸入您的年齡:";cin>>age;if(age>100||age<1)throw"年齡無效!";cout<<"throw語句之后"<<endl;}catch(char*msg){cout<<"錯誤!"<<msg<<endl;}cout<<"catch處理程序之后"<<endl;return0;}拋出一個異常對象#include<iostream.h>classAgeException{public: intnum; char*description; AgeException() {num=1; description="年齡出錯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024鍋爐維修工程協(xié)議格式
- 2024年度汽車租賃協(xié)議格式
- 2024商業(yè)秘密保護競業(yè)限制協(xié)議樣本
- 2024年倉庫轉租協(xié)議條款
- 動產(chǎn)資產(chǎn)抵押協(xié)議范例2024年
- 2024年度煤炭洗選加工服務協(xié)議模板
- 2024年簡化常規(guī)采購協(xié)議樣式
- 2024單位設施局部維修合作協(xié)議樣本
- 山東省聊城市東阿縣姜樓中學2024-2025學年八年級上學期11月月考生物學試題(含答案)
- 2024年工程款支付協(xié)議范例
- 一年級上冊全冊道德與法治教案全
- 中班健康《身體上的洞洞》課件
- GB/T 9452-2023熱處理爐有效加熱區(qū)測定方法
- 停車場施工方案及技術措施范本
- 高考地理一輪復習課件【知識精講+高效課堂】美食與地理環(huán)境關系
- 分居聲明告知書范本
- 2023年04月山東濟南市槐蔭區(qū)殘聯(lián)公開招聘殘疾人工作“一專兩員”公開招聘筆試參考題庫+答案解析
- 消失的13級臺階
- 營銷管理知識點
- 船體強度與結構設計課程設計
- 不寧腿綜合征診斷與治療
評論
0/150
提交評論