參考鏈接:https://blog.csdn.net/freeking101/article/details/60959624
#include<iostream>//io stream
#include<fstream> //f stream
#include<istream> //i stream
#include<ostream> //o stream
//……
通過上面的4個頭檔案,大家不難發現,C++有個stream類,所有的I/O都以stream爲基礎
cout<<"Hello";//<<
向流輸出數據
<<爲插入器
平時我們想要輸出一個東西時,會有一個自帶的輸出流,即cout
cout=c+out//c++輸出流
那麼我們cout<<"Hello"就會將Hello輸出到標準輸出流
int x;
cin>>x;//>>
流中輸入數據
>>爲析取器
析取器一般指的是鍵盤,所以上面程式碼中,表示從鍵盤讀取一個int型別的數位
理解了插入器和析取器,下面 下麪來看看stream的幾個標頭檔案
ofstream:輸出流(寫)
ifstream:輸入流(讀)
fstream:檔案操作流(可讀寫)
今天講的是檔案操作,所以fstream爲主角(主角光環登場!)
fstream這個標頭檔案最拿手的就是讀寫操作辣~
開啓一個檔案,對它進行任何操作,實際就是對該檔案所做的操作
溫馨提示:
ios::out 檔案以輸出(寫)方式開啓
ios::in 檔案以輸入(讀)方式開啓
ios::ate 初始位置:檔案尾
ios::app 所有輸出附加在檔案末尾
ios::trunc 如果檔案已存在則先刪除該檔案
ios::binary 二進制方式
這六種東西可以根據自己的需要自行挑選,可以用|
把以上屬性連線起來
如:ios::in|ios::app
開啓方式
第一種
……我忘了,副主角好像是ifstream和ofstream
因爲它們是讀寫操作
#include<iostream>//這個要加,因爲ifstream和ofstream在這裏
#include<fstream>//主角
using namespace std;
int main()
{
ifstream infile;
infile.open("D:\\安安.txt",ios::out|ios::app|ios::binary);
return 0;
}
第二種
只有一個開啓方式未免低調了一點
#include<fstream>
#include<iostream>
using namespace std;
int main()
{
ifstream file("D:\\安安.txt",ios::out|ios::app|ios::binary);
return 0;
}
還有更多的開啓方式,這裏不再做詳細解釋
沒啥好說的
當檔案讀寫操作完成之後,我們必須將檔案關閉以使檔案重新變爲可存取的。關閉檔案需要呼叫成員函數close(),它負責將快取中的數據排放出來並關閉檔案。
不關閉檔案會……丟失!
ofstream infile;
infile.close();
這裏我們已經知道瞭如何開啓檔案
辣麼怎麼讀檔案呢
新副主角:assert
這是一個判斷路徑是否有錯的檔案,一蛋你路徑寫錯了,辣麼它就會……報錯!
如果路徑寫的對,繼續往下執行
具體用法如下
assert(infile.is_open());
一句話,就可以判斷路徑是否有錯
判斷路徑是否有錯知道了,辣麼怎麼讀檔案呢,你扯了半天
(800米的大刀早已飢渴)
while回圈即可解決
行行讀取(string)
#include<iostream>
#include<iostream>
#include<fstream>
#include<cassert>
#include<cstring>//我表示今天這個副主角我不歡迎,但要用的還要用
using namespace std;
int main()
{
ifstream infile;
infile.open("D:\\安安.txt",ios::out|ios::app|ios::binary);//開啓檔案
assert(infile.is_open());//檢測路徑是否有錯
string s;//字串爲一行
while(getline(infile,s))//get每一行
{
cout<<s<<"\n";//輸出後就換行
}
return 0;
}
辣麼我們的讀檔案這塊部分就告一段落
無論是讀還是寫檔案,都要開啓或建立檔案
那麼剛說了ifstream是輸入流,它登場!
ifstream outfile;
outfile.open("D:\\txt.txt",ios::in||ios::app||ios::binary);//寫入檔案就要ios::in
這裏有個容易混淆的地方,即
我們說<<
是插入器,>>
是析取器,那麼我們要寫入的時候要用到哪個呢
這裏給大家一個思考
Round 1
甲:我覺得應該用>>
,因爲你要寫入一個檔案嘛,肯定是要用鍵盤寫入啊
甲說服率:53%
乙:我不贊同,因爲終究是要把你寫入的東西存到檔案裡的,這個步驟你還需要動鍵盤?
甲乙各佔50%
Round 2
甲:存入到檔案嘛,你是不是要把每一行存入到這個檔案,我……(好像理虧)
甲說服率:21%
乙:這個時間根本不用動鍵盤,只不過是系統幫你存到這裏去嘍
乙說服率:100%
贏主:乙
所以使用插入器是正確的
ifstream是寫,所以
ifstream outfile;
string write;
outfile<<write;
outfile.close();//關閉檔案流
EOF表示是否到達檔案尾,是則返回非0直,否返回0值
具體用法
if(in.eof())ShowMessage("停止!");
exit表示終止程式,同時關閉緩衝區剩餘的數據輸出並關閉所有已經開啓的檔案
參數:傳參0或非0
參數含義
傳0表示程式正常停止
不傳0表示程式異常停止