C++檔案讀寫

來源:互聯網
上載者:User

標籤:

 

1 簡單讀寫檔案

1 #include <fstream>  2 ofstream         //檔案寫操作 記憶體寫入存放裝置   3 ifstream         //檔案讀操作,存放裝置讀區到記憶體中  4 fstream          //讀寫操作,對開啟的檔案可進行讀寫操作 

寫檔案用ofstream和ostream方法(如<<),讀檔案用ifstream和istream方法(如>>),讀寫檔案可以用fstream,具體步驟個人總結為三步走:

寫檔案:

  1.建立一個ofstream對象     ofstream out;

  2.將對象與檔案進行關聯      out.open("1.txt");  

  3.用cout方式使用該對象      out<<"123456"; 

其中前兩步可以合并為ofstream out("1.txt");

讀檔案:

  1.建立一個ifstream對象      ifstream in;

  2.將對象與檔案進行關聯      in.open("1.txt");  

  3.用cout方式使用該對象     string x;   int>>x; 

其中前兩步可以合并為ifstream in("1.txt");  

注意:對象名稱可以隨意命名,不一定非得是in或out。

   檔案讀寫完畢後檔案自動關閉,亦可顯示的關閉檔案的串連,比如in.close();

 

2 檔案模式

無論是使用檔案名稱初始設定檔案流對象還是使用open()方法,都可以指定檔案模式的第二個參數

ios::in       開啟檔案以便讀取

ios::out    開啟檔案以便寫入

ios::ate        開啟檔案移動到檔案尾

ios::app       內容追加到檔案尾

ios::trunc     刪除之前內容再寫入

ios::binary    二進位檔案

這些方式是能夠進行組合使用的,以“或”運算(“|”)的方式:例如

1 fstream out("Hello.txt", ios::in|ios::out)

 

3 一個複製檔案的例子

 1 #include <iostream> 2 #include <fstream> 3 #include <cstdlib> 4  5 using namespace std; 6 void cpf(char *a,char *b); 7  8 int main() 9 {10     char sourcefile[100];11     char copyfile[100];12     cout<<"請輸入要複製的檔案路徑"<<endl;13     cin>>sourcefile;14     cout<<"請輸入要粘貼的檔案路徑"<<endl;15     cin>>copyfile;16 17     cpf(sourcefile,copyfile);18 19     return 0;20 }21 22 void cpf(char *a,char *b)23 {24     fstream in(a,ios::in | ios::binary);25     if(!in.is_open())26     {27         cerr<<"源檔案不存在"<<endl;28         exit(EXIT_FAILURE);29     }30     fstream out(b,ios::out | ios::binary);31     if(!in.is_open())32     {33         cerr<<"路徑錯誤"<<endl;34         exit(EXIT_FAILURE);35     }36     out<<in.rdbuf();37     cout<<"檔案複製成功"<<endl;38 }

 需要注意的地方

1.檔案路徑是char數組,傳遞參數時應該將形參設為指標

2.複製檔案應該用ios::binary(二進位模式),原因是使用二進位檔案模式時,程式將資料從記憶體傳遞給檔案,將不會發生任何隱藏的轉換,而預設狀態下是文字模式,複製的內容可能會發生改變(參見c++ primer plusP695)

3.關於 rebuf():複製檔案時是從一個流對象複製流入另外一個流對象,需要使用rebuf(),rebuf()的功能就是使流重新導向

4.exit(EXIT_FAILURE)相當於exit(1),exit(EXIT_SUCCESS)相當於exit(0)

C++檔案讀寫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.