版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C+簡單讀寫文本文件、統(tǒng)計(jì)文件的行數(shù)、讀取文件數(shù)據(jù)到數(shù)fstream 提供了三個類,用來實(shí)現(xiàn) c+對文件的操作。(文件的創(chuàng)建、讀、寫)。ifstream - 從已有的文件讀ofstream -向文件寫內(nèi)容fstream -打開文件供讀寫文件打開模式:ios:inios:outios:app從文件末尾開始寫ios:b inary二進(jìn)制模式ios: nocreate打開一個文件時,如果文件不存在,不創(chuàng)建文件。ios: no replace打開一個文件時,如果文件不存在,創(chuàng)建該文件ios:tr unc打開一個文件,然后清空內(nèi)容ios:ate打開一個文件時,將位置移動到文件尾文件指針位置在C+中的用法
2、:ios:beg文件頭ios:e nd文件尾ios:cur當(dāng)前位置例子:file.seekg(0,ios:beg);/讓文件指針定位到文件開頭file.seekg(10,ios:cur);/讓文件指針從當(dāng)前位置向文件末方向移動10個字節(jié)file.seekg(-10,ios:cur); /讓文件指針從當(dāng)前位置向文件開始方向移動10個字節(jié)file.seekg(10,ios:beg); /讓文件指針定位到離文件開頭10個字節(jié)的位置常用的錯誤判斷方法:good()如果文件打開成功bad()打開文件時發(fā)生錯誤eof()到達(dá)文件尾實(shí)例:一、寫入文件#in clude #i nclude using n a
3、mespace std;void mai n()ofstream in;in.open(com.txt,ios:trunc); /ios:trunc表示在打開文件前將文件清空,由于是寫入,文件不存在則創(chuàng)建int i;char a=a;for(i=1;i=26;i+) 將26個數(shù)字及英文字母寫入文件if(i10) in 0itan; a+;elsein itan; a+;in.close();關(guān)閉文件打開com.txt,效果如下:立件騎輯退)格式 查署苦 幫助01a02bD30d05e06f07908n09i10j11k12113n1t|n15016p17q18r19弓2t2Au22u29u2
4、itX25y26z、讀取文件上面僅僅是將文本寫入文件,并沒有讀取出來。以下為讀取文件的一種方法:將文件每行內(nèi)容存儲到字符串中,再輸出字符串#in elude #i nclude using n amespace std;void mai n()char buffer256;fstream out;out.ope n(com.txt,ios:i n);coutcom.txt 的內(nèi)容如下:endl;while(!out.eof()out.getline(buffer,256,n);/getline(char *,int,char)表示該行字符達(dá)到256 個或遇到換行就結(jié)束coutbuffere n
5、dl;out.close();cin .get();/ci n. get()是用來讀取回車鍵的,如果沒這一行,輸出的結(jié)果一閃就消失了逐個字符的讀取文件:#in clude #i nclude using n amespace std;void mai n()fstream in;char c;in. ope n(co mn. txt,ios:i n); while(!i n.eof()in c;coutc;in .close();cin .get();這個方法讀取的文件,所有字符都一起顯示,不會分行。這里字母z顯示兩次,是正常的,因?yàn)樵谳敵鑫募詈笠粋€字母z之后,又輸出了一次(可以仔細(xì)考慮程序
6、代碼)。讀取文件某一行內(nèi)容:#in elude #i nclude #in elude using n amespace std;int CountLin es(char *file name)ifstream ReadFile;int n=0;stri ng tmp;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只讀的方式讀取文件if(ReadFile.fail()文件打開失?。悍祷?return 0;else/文件存在while(getl in e(ReadFile,tmp)n+;return n;ReadFile.close();string
7、 ReadLine(char *filename,int line)in t li nes,i=0;string temp;fstream file;file.ope n( file name,ios:i n);lin es=Co untLin es(file name);if(li neli nes)return Error 3:行數(shù)超出文件長度。 while(getli ne(file,temp )&i li ne-1)i+;file.close();return temp;void mai n()in t l;char file name256;cout 請輸入文件名: file nam
8、e;:e ndl;cout 1;coutReadL in e(file name,l);cin .get();cin .get();很顯然,根據(jù)以上程序,利用循環(huán),可以逐行讀取整個文件內(nèi)容。三、統(tǒng)計(jì)文件的行數(shù)#in elude #i nclude using n amespace std;int CountLin es(char *file name)ifstream ReadFile;int n=0;char lin e512;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只讀的方式讀取文件if(ReadFile.fail() 文件打開失?。悍祷?/p>
9、0return 0;else/文件存在while(!ReadFile.eof()ReadFile.getli ne(li ne,512,n);n+;return n;ReadFile.close();void mai n()coutcomn.txt 的行數(shù)為:CountLines(comn.txt)endl;cin .get();原因以上程序的設(shè)計(jì)思路沒有問題,但在實(shí)際操作的時候會發(fā)現(xiàn)統(tǒng)計(jì)出的行數(shù)與實(shí)際不符,自動加1.如果換行符在新的一行, 返回的結(jié)果會比實(shí)際多 1;如果不在新的一行, 返回結(jié)果與實(shí)際相符??梢孕薷娜缦拢?in elude #i nclude #in elude using n
10、 amespace std;int CountLin es(char *file name)ifstream ReadFile;int n=0;char lin e512;string temp;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只讀的方式讀取文件if(ReadFile.fail()文件打開失敗:返回0return 0;else/文件存在while(getli ne(ReadFile,temp)n+;return n;ReadFile.close();void mai n()coutcomn.txt的行數(shù)為:CountLines(com
11、n.txt)endl;cin .get();四、讀取文件數(shù)據(jù)到數(shù)組#in clude #i nclude #in clude using n amespace std;int Cou ntLi nes(char *file name)/獲取文件的行數(shù)ifstream ReadFile;int n=0;string temp;ReadFile.ope n( file name,ios:i n);/ios:i n表示以只讀的方式讀取文件if(ReadFile.fail()/ 文件打開失?。悍祷?return 0;else/文件存在,返回文件行數(shù)while(getli ne(ReadFile,temp)n+;return n;ReadFile.close();void mai n()ifstream file;int LINES;char file name512;:e ndl;cout file name;file.ope n(file name,ios:i n);cout文件不存在.endl;file.close();cin .get();cin .get();else/文件存在LINES=Cou ntLi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國易碎紙不干膠數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國文水神功帶數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年加厚型百潔布項(xiàng)目投資價值分析報(bào)告
- 2025年金屬鏡框項(xiàng)目可行性研究報(bào)告
- 2025年色譜乙腈項(xiàng)目可行性研究報(bào)告
- 2025年系船柱項(xiàng)目可行性研究報(bào)告
- 2025年多路灰分揮發(fā)分儀項(xiàng)目可行性研究報(bào)告
- 2025年仿兔毛線項(xiàng)目可行性研究報(bào)告
- 2025年中國甘草浸粉市場調(diào)查研究報(bào)告
- 2025至2030年多功能動態(tài)心電自動監(jiān)測儀項(xiàng)目投資價值分析報(bào)告
- 衡水市出租車駕駛員從業(yè)資格區(qū)域科目考試題庫(全真題庫)
- 護(hù)理安全用氧培訓(xùn)課件
- 《三國演義》中人物性格探析研究性課題報(bào)告
- 注冊電氣工程師公共基礎(chǔ)高數(shù)輔導(dǎo)課件
- 土方勞務(wù)分包合同中鐵十一局
- 乳腺導(dǎo)管原位癌
- 冷庫管道應(yīng)急預(yù)案
- 司法考試必背大全(涵蓋所有法律考點(diǎn))
- 公共部分裝修工程 施工組織設(shè)計(jì)
- 《學(xué)習(xí)教育重要論述》考試復(fù)習(xí)題庫(共250余題)
- 裝飾裝修施工及擔(dān)保合同
評論
0/150
提交評論