C++ 操作文本文件

C++把IO封裝成類

操作文本文件
需要包含頭文件#include <fstream>
寫文件(輸出流)
步驟(四步)
創(chuàng)建輸出流對象
ofstream fp ; //創(chuàng)建輸出流對象
打開文件,?打開模式缺省時如果文件不存在就創(chuàng)建,文件存在則截?cái)鄡?nèi)容
fp.open("文件路徑",打開模式); ?//按照打開模式打開文件
文件路徑注意事項(xiàng):
目錄文件可以使用相對路徑或絕對路徑
如果在windows平臺下,因?yàn)?#39; \ \'為轉(zhuǎn)義字符,可以使用以下方法:
"D:\\data\\txt\\test.txt \" ? 使用' \\ \'替換' \ \'
"D:/data/txt/test.txt \" ? 使用' / \'替換' \ \'
R"(D:\data\txt\test.txt)" 使用原始字面量,C++11標(biāo)準(zhǔn)
打開模式作用ios::out缺省值,會截?cái)辔募?nèi)容(可理解為覆蓋原有內(nèi)容)ios::trunc截?cái)辔募?nèi)容(可理解為覆蓋原有內(nèi)容)ios::app不截?cái)辔募?nèi)容,在文件尾追加內(nèi)容
?打開文件可能不成功,需要判斷,使用 輸出流對象名.is_open()
判斷,打開失敗返回false;打開成功返回true。
打開文件失敗原因:
目錄不存在
磁盤空間已滿
沒有權(quán)限(Linux平臺下常見)
向文件中寫入數(shù)據(jù)
關(guān)閉文件
輸出流對象名.close(); ?//關(guān)閉文件
演示代碼:
讀文件(輸入流)
步驟(四步)
創(chuàng)建輸入流對象
ifstream fp; //創(chuàng)建輸出流對象
打開文件?文件不存在時打開文件失敗
fp.open(文件路徑,打開模式);//打開模式缺省值為
ios::in
打開文件失敗原因:
目錄不存在
文件不存在
沒有權(quán)限(Linux平臺下常見)
從文件中讀取數(shù)據(jù)(三種方法)
文本文件一般以行的方式組織數(shù)據(jù)
getline()函數(shù)
getline(輸入流對象名,緩沖區(qū));
緩沖區(qū)需要提前定義
輸入流getline()函數(shù)
輸入流對象名.getline(緩沖區(qū),最多讀取的字節(jié)數(shù))
?如果采用這種方式讀取,一定要保證緩沖區(qū)足夠大,超過緩沖區(qū)的部分讀取不成功
使用>>運(yùn)算符
輸入流對象名 >> 緩沖區(qū)
?>>運(yùn)算符從文件中讀取文本內(nèi)容時會將空格、制表符、換行符、視為分隔符,讀取并返回下一個非空白字符之前的字符,它將跳過所有連續(xù)的空白字符,直到遇到一個非空白字符。
例如:
春風(fēng)得意馬蹄疾,一日看盡長安花。
? ? ? ? ? ? ? ? ?——孟郊《登科后》使用>>運(yùn)算符讀取會變成
春風(fēng)得意馬蹄疾,一日看盡長安花。
——孟郊《登科后》
解決>>運(yùn)算符跳過空白字符的問題
使用字符串輸出流操作符,它將整個文件內(nèi)容讀入字符串流(包括空白字符)
解決>>運(yùn)算符跳過空白字符的問題
?