[檔案處理] get(),getline(),put()

除了可以使用(<<)與(>>)運算子外
還可以使用類別內的函數

  • get(),put():讀取或寫入特定單元
  • getline():一次讀取特定數目字元數
  • 檔案物件.get(ch);                    從檔案讀取一個字元,並把它寫入ch字元變數
  • 檔案物件.getline(str,N,’n’);    從檔案內最多讀取N-1個字元,或是讀取到’n’,並把他們存放到字串str中
  • 檔案物件.put(ch);                   將ch字元變數寫入檔案內
Ex:

#include &amp;amp;lt;iostream&amp;amp;gt;
#include &amp;amp;lt;fstream&amp;amp;gt;    //要載入&amp;amp;lt;fstream&amp;amp;gt;標頭檔 
using namespace std;



int main(){
 
 char txt[]={"錦江春色來天地,玉壘浮雲變古今。北極朝近終不改,西山寇盜莫相侵。"}; 
 ofstream ofile("C:\\test.txt",ios::out);       

 int i=0; 
 
 while(txt[i]!='\0')
 {
  ofile.put(txt[i]);
  i++;
  
 }
 
 cout &amp;amp;lt;&amp;amp;lt; "字串已寫入" &amp;amp;lt;&amp;amp;lt; endl; 
 
 ofile.close();     
 
 
}
打開該純文字檔 可以發現剛剛的資料已經寫在裡面

拷貝文字檔

會將先前建立的讀入

在寫入到另一個檔案

相當於文字檔的拷貝

接著再開啟拷貝的檔案

印在螢幕上面

Ex:

#include &lt;iostream&gt;
#include &lt;fstream&gt;    //要載入&lt;fstream&gt;標頭檔 
using namespace std;



int main(){
 
 char txt[80],ch;
  
 ifstream ifile1("C:\\test.txt",ios::in); 
 ofstream ofile("C:\\test2.txt",ios::out);   
 
 if(ifile1.is_open()&amp;&amp;ofile.is_open()){
 
  cout &lt;&lt; "檔案已開啟" &lt;&lt; endl; 
  
  while(ifile1.get(ch))
   ofile.put(ch);
  
 cout &lt;&lt; "拷貝完成" &lt;&lt; endl;  
    
 }
 
 else
  cout &lt;&lt; "檔案未開啟" &lt;&lt; endl; 
 
 ofile.close();
 ifile1.close();
 
 ifstream ifile2("C:\\test2.txt",ios::in);
 
 if(ifile2.is_open()){
  
  cout &lt;&lt; "檔案已開啟" &lt;&lt; endl; 
  while(!ifile2.eof())
  {
 
   ifile2.getline(txt,80,'\n');
   cout &lt;&lt; txt;
  
  }     
  
 }
 
 
 else
  cout &lt;&lt; "檔案未開啟" &lt;&lt; endl;  
  
 ifile2.close();
 
 
}




有疑問? 留個言吧!

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料