簡(jiǎn)單說一下“流”
先來說一下什么叫做“流”浇雹,輸入是將數(shù)據(jù)從輸入設(shè)備傳送到主機(jī)內(nèi)存的過程,輸出是將數(shù)據(jù)從主機(jī)內(nèi)存?zhèn)魉偷捷敵鲈O(shè)備的過程导狡,數(shù)據(jù)就像流水一樣在主機(jī)內(nèi)存與外部設(shè)備之間流動(dòng)纹坐,因此C++語言將這種數(shù)據(jù)的流動(dòng)現(xiàn)象稱為“流”。
文件的分類:
與C語言一樣痊夭,C++語言根據(jù)文件內(nèi)容的數(shù)據(jù)格式刁岸,將文件分為兩類:
文本文件(text file)與二進(jìn)制文件(binary file)
文本文件由字符序列組成,字符由字符編碼表示她我,既可以是按ASCII編碼虹曙,也可以是按國際標(biāo)準(zhǔn)字符集Unicode編碼。
在文本文件中存取的最小信息單位是字符番舆,既可以是單字節(jié)的ASCII字符酝碳,例如英文字母;也可以是雙字節(jié)的編碼表示的字符(character)恨狈,例如漢字疏哗。而二進(jìn)制文件是按照數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式將其放到磁盤或光盤上,二進(jìn)制文件存取的最小信息單位是字節(jié)(Byte)禾怠。
下面說一下C++中文件的輸入和輸出操作主要的步驟:
(1)打開文件
<1>ifstream類:該類的對(duì)象支持文件的輸入返奉。
例如:ifstream finput;
<2>ofstream類:該類的對(duì)象支持文件的輸出。
例如:ofstream foutput;
<3>fstream類:該類的對(duì)象既可以支持文件的輸入刃宵,也可以支持文件的輸出衡瓶。
例如:fstream ofile;
以上三種類都是從iostream類派生出來的,被叫做“文件流類”牲证,要使用C++流庫對(duì)文件進(jìn)行輸入輸出哮针,首先得創(chuàng)建文件流類的對(duì)象,通過這個(gè)文件流類的對(duì)象將數(shù)據(jù)從內(nèi)存輸出到文件坦袍,或者將數(shù)據(jù)從文件輸入到內(nèi)存十厢。
(2)進(jìn)行文件的讀寫操作
文件的寫操作:
char str1[20],str2[20];
ofstream finput("test.txt");//創(chuàng)建流類對(duì)象并打開文件
if(!finput.is_open()){//判斷文件是否成功打開(使用open()函數(shù)將流對(duì)象finput與test.txt進(jìn)行關(guān)聯(lián))
cout<<"Can't open file test.txt\n";
return 1;
}
finput<<"Learning C++ programming is fun!\n";
文件的讀操作:
ifstream foutput("test.txt");//創(chuàng)建流類對(duì)象并打開文件
if(!foutput.is_open()){
cout<<"Cannot open file test.txt.\n";
return 1;}
foutput >> str1;//從文件中讀出數(shù)據(jù)
foutput.getline(str2,30);//輸入帶空白的字符串需使用getline()函數(shù)
cout<< str1 << str2 <<endl;
(3)關(guān)閉文件
foutput.close();
特別注意:
下面的這兩句代碼我琢磨了半天,其實(shí)是個(gè)很簡(jiǎn)單的問題
foutput >> str1;//從文件中讀到字符串并放入到str1數(shù)組捂齐,可惜只能讀到 Learning蛮放,后面的通通讀不到。
foutput.getline(str2,30);//從文件中讀到字符串并放入到str2數(shù)組奠宜,采用這種方法肯定是能完整的讀到字符串包颁,但要注意后面限定的字符串長度。
使用輸入運(yùn)算符“>>”來讀入文本文件時(shí)压真,空白字符會(huì)被忽略娩嚼;
使用輸入運(yùn)算符“>>”來讀入字符串時(shí),遇到第一個(gè)空白字符將會(huì)被停止滴肿。
因此要使用流類的成員函數(shù)getline()來輸入包含有空格的字符串岳悟。
文件的打開方式:
文件的打開方式有很多,這里只是簡(jiǎn)單列舉幾個(gè)常用的打開方式。
ios::app//以輸出方式打開文件贵少,輸出的數(shù)據(jù)寫在文件的末尾
ios::ate//打開一個(gè)已有的文件呵俏,并將文件指針移到文件尾
ios::in//輸入方式打開文件
ios::out//輸出方式打開文件
ios::binary//二進(jìn)制方式文件
特別注意:
可以使用按位邏輯“或”運(yùn)算符OR將多個(gè)打開方式進(jìn)行枚舉。例如:
ios::out | ios::binary//輸出方式打開二進(jìn)制文件
C++文件的基本輸入輸出操作就簡(jiǎn)單介紹到這里了滔灶,
喜歡就點(diǎn)贊哦