版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
文件操作和異常第六章回顧輸出流插入操作符<<,cout.put(),cout.write輸出操縱符:進制問題,cout.setf()函數使用輸入流提取操作符>>cin.get()cin.getline()輸入操縱符目標文件輸入文件輸出異常處理文件輸入/輸出從文件讀取和寫入文件的過程獲得流是使用文件的先決條件添加頭文件fstream.h兩個基本類ifstream
讀取文件ofstream
寫入文件文件輸入/輸出相關流類庫iosistreamostreamiostreamifstreamofstreamfstream文件相關流流是一組字符或數據流的源或目的每個流都和一個特定的類相關ios類是流類層次結構的虛擬基類兩種流輸出流(允許寫入或存儲字符)輸入流(允許讀取或提取字符)三個流類ifstream類——用于文件輸出(讀取到內存)ofstream類——用于文件輸入(從內存寫到文件)fstream類——既可以讀又可以寫文件操作的基本步驟獲得流,在創(chuàng)建流的時候應該將流和文件相關。使用流提取和流插入的符號>><<進行操作文件操作可以實現讀取和寫入字節(jié)/二進制數據塊監(jiān)測文件結尾輸入流可以忽略字符支持隨機訪問文件流和控制臺流是等效的,可以重用插入函數和提取函數文件輸出——獲得流打開文件方式一Ofstream
outfile(“temp.txt”);創(chuàng)建了一個ofstream類的對象Temp.txt是要寫入的文件如果文件存在就刪除現有文件如果文件不存在,就創(chuàng)造一個新文件還可以有其他的處理方式打開文件方式二ofstream
OpenFile;OpenFile.open(“cpp-home.txt”);文件輸出——獲得流void
main(){char
a[10],b[10];int
num;//ofstreamoutfile(“temp.txt”);//等效于下面2行。、、、//ofstream就是系統定義好的一個類,outfile是自定義的一個對象ofstream
outfile;outfile.open("temp.txt");outfile.write("aaa",strlen("aaa"));
//效果等同下面一句outfile<<"
"<<"aaa"<<""<<33; //加上""才能分開輸入分開輸出
outfile.close();}文件輸出示例#include
<fstream.h>void
main(){char
*name
=
"QWERTY
POIUYT";int
age
=
49;float
salary
=
600.123f;ofstream
fout
(“TEST.TXT”);//或者c:\\test.txtfout
<<
"此行寫入了
TEST.TXT
中\(zhòng)n";fout
<<
name
<<
"
"
<<
age
<<
"
"
<<
salary;fout.close();}文件輸出——其他示例ofstream
從iostrearn
類派生且所有iostream操作都可以應用到一個ofstream類對象上例如char
ch
=
'
';ofstream
outFile
("a.txt");outFile.put(
'1'
).put(
')'
).put(
ch
);outFile
<<
"1
+
1
=
"
<<
(1
+
1)
<<
endl;向outfile
中插入1)
1
+
1
=
2文件輸入——獲得流istream包含為輸入操作(流提?。┒x的函數創(chuàng)建一個ifstream類的對象,使用流提取操作符(>>)讀取來自該對象的輸入ifstream
fin(“temp.txt”);創(chuàng)建了一個ifstream類的對象,打開test.txt進行讀取文件輸入示例(1)#include
<fstream.h>void
main
(){ifstream
fin
(“TEST.TXT”);//讀取此文件的信息
char
line
[100];char
name
[50];int
age;float
salary;fin>>line;fin>>name>>age>>salary;cout<<line<<endl;cout<<name<<""<<age<<""<<salary<<endl;fin.
close();}文件輸入示例(2)#include
<fstream.h>void
read(ifstream
&T){charch;while(!T.eof()){T.get(ch);cout
<<ch;}cout
<<
endl
<<
"--------"
<<
endl;}void
main(){ifstream
T("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打開一個二進制文件文件輸入/輸出示例打開一個文件并刪除所有內容ofstream
fout("TEST.TXT");ofstream
fout("TEST.TXT",ios::out);ofstream
fout(“TEST.TXT”,ios::out|ios::trunc);//默認情況如果文件存在則刪除打開一個文件并追加內容ofstream
fout("TEST.TXT",ios::app);打開一個文件進行二進制輸出ofstream
fout("TEST.TXT",ios::binary);文件輸入/輸出示例fstream
f;f.open(“文件名”,打開方式)f.close()While(!f.eof()){//繼續(xù)讀取文件}//在輸入的時候有用示例文件輸入/輸出示例#include
<fstream.h>void
main(){fstream
File("c:\\test.txt",ios::in
|
ios::out);File<<"Hi!";//將“Hi!”寫入文件static
char
str[10];//當使用static時,數組會自動被初始化//即是被清空為零
File.seekg(ios::beg);//回到文件首部File
>>
str;cout
<<
str
<<
endl;File.close();}隨機訪問——兩個管理讀寫位置的指針get和put指針分別指定讀和寫操作的當前位置get:從設備到內存,稱之為讀,管理輸入的位置put:從內存到設備,稱之為寫,管理輸出的位置每次執(zhí)行輸入或輸出操作時,這兩個指針都按一定順序自動移動隨機訪問——兩對管理指針的方法seekg()和tellg()函數可用來控制get指針seekp()和tellp()函數對put指針進行類似的操作seekg()和seekp(),用來在輸入輸出的時候隨機定位使用tellg()和tellp()函數在文件中查找
get和put指針的當前位置隨機訪問示例——Seekg()和tellp()Seekg()的示例seekg()使用兩個參數要移動的字節(jié)數文件中重定位指針時的參考位置Ifstream
fin;fin.seekg(10,ios::beg);//get指針在離文件頭10個字節(jié)的位置Ios::beg——文件的開頭
Ios::cur——文件指針的當前位置
Ios::end——文件的結尾tellg()的示例Ofstream
fout(“text.txt”,ios::ate);Cout<<fout.tellp();//打印寫指針的位置二進制訪問示例#include
<fstream.h>void
main(){fstream
File("test_file.txt",ios::out
|
ios::in
|
ios::binary);char
ch;ch='o';charch2;File.put(ch);//將ch的內容寫入文件File.seekg(ios::beg);//定位至文件首部File.get(ch2);//讀出一個字符cout<<ch2<<endl;//將其顯示在屏幕上File.close();}tellg()函數示例#include
<fstream.h>void
main(){//假如我們已經在test_file.txt中存有“Hello”的內容ifstream
File("test.txt");char
arr[10];File.read(arr,7);//這里將返回7arr[7]='\0';cout<<arr;cout
<<
File.tellg()
<<
endl;File.close();}異常異常是在運行時發(fā)生的錯誤事件發(fā)生異常時,C++作出如下反應產生異常的函數產生系統定義的消息函數徹底終止函數可能跳過中間級別繼續(xù)處理另一部分異常與錯誤異常是在執(zhí)行程序的過程中出現的錯誤或異常情況(運行時)錯誤是指在編寫和編譯程序時存在的問題邏輯錯誤語法錯誤異常處理異常處理的實現為try塊,也稱為監(jiān)視部分throw表達式,指示異常的種類拋出一個值,一個字符串或一個對象catch處理程序,在發(fā)生異常時執(zhí)行異常處理示例#include
<iostream.h>int
main(){try{int
age;cout<<"請輸入您的年齡:";cin>>age;if
(age>100
||
age<1)throw"年齡無效!";cout<<"throw語句之后"<<endl;}catch
(char
*msg){cout<<"錯誤!"<<msg
<<endl;}cout<<"catch處理程序之后"<<endl;return
0;}拋出一個異常對象#include
<iostream.h>class
AgeException{public:int
num;char
*description;AgeException(){num=1; description
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度SPF豬飼養(yǎng)智能化養(yǎng)殖設備租賃合同3篇
- 2024年集裝箱裝卸作業(yè)合同3篇
- 二零二五公車私用及公務調派合作協議3篇
- 2024年車輛檢測與評估服務合同
- 2024年集資房產交易協議標準格式版B版
- 2024教育科技-在線教育平臺建設與運營協議
- 2024年購銷合同履行與管理
- 2025版現代農業(yè)養(yǎng)殖合伙發(fā)展協議書3篇
- 2024年豬舍建造工程協議模板版B版
- 2024年茶葉產品研發(fā)與技術轉讓合同
- 教科版(2024秋)六年級上冊1.各種形式的能量 教案
- 二年級數學看錯數字問題專項練習
- 北京市通州區(qū)2023-2024學年高三上學期期末考試政治試題 含解析
- 2024年1月國家開放大學??啤斗ɡ韺W》期末紙質考試試題及答案
- 手機短視頻拍攝與剪輯(微課版) 課件 第7章 視頻攝像
- 反訴狀(業(yè)主反訴物業(yè))(供參考)
- GH/T 1451-2024調配蜂蜜水
- 送溫暖活動困難職工幫扶申請表
- 小學六年級英語教學小助手的培養(yǎng)研究
- 2024年人教版初二物理上冊期末考試卷(附答案)
- 山東省臨沂市河東區(qū)2023-2024學年五年級下學期期末綜合(道德與法治+科學)檢測試題
評論
0/150
提交評論