Chapter 7-2
description
Transcript of Chapter 7-2
![Page 1: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/1.jpg)
Chapter 7-2
檔案管道
![Page 2: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/2.jpg)
為何要使用檔案 (files) ?
之前談過,當宣告單一變數來輸入全班成績時 (chi,eng,math,avg,sum…) ,前一位同學的成績將被後一位同學的成績給覆蓋掉,無法查詢之前的個人成績使用陣列後,查詢之前的成績已非難事,然而,無論是陣列或單一變數,都將面臨關機後資料即流失的命運倘若能將資料以檔案型式儲存在磁碟中,即使關機也不怕資料流失
![Page 3: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/3.jpg)
如何將資料存入與讀出磁碟?
C++ 提供檔案輸入/輸出的類別,稱為檔案管道函數庫 fstream.h fstream.h 包含了 iostream.h ,因此,程式中含括了 fstream.h 後,無須再含括 iostream.h
類別 ofstream 支援檔案寫入 ifstream 支援檔案讀出 fstream 支援檔案寫入及讀出
![Page 4: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/4.jpg)
字串的輸入
將字串寫入檔案中 宣告方式
ofstream 物件名稱 ( 檔案名稱 );ofstream outf("datafile.txt");
物件名稱可以自訂,在程式中配合插入運算子 (<<) 使用
![Page 5: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/5.jpg)
字串的輸入 ( 續 )
物件名稱的用法與 cout 類似outf<<"Hello !"<<endl<<"Good-bye";
![Page 6: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/6.jpg)
字串的輸出
將字串自檔案中讀出 宣告方式
物件名稱的用法與 cin 相類似
ifstream 物件名稱 ( 檔案名稱 );
ifstream inf("datafile.txt");
char buffer[80];inf>>buffer;
在程式中配合擷取運算子 (>>) 使用
![Page 7: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/7.jpg)
字串的輸出 ( 續 )
為何分成這麼多列?
因為,擷取運算子會將空白字元當作結束字元之
故
//假如檔案開啟失敗
![Page 8: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/8.jpg)
字串的輸出 ( 續 )若要正常顯示於螢幕上,可使用 getline()函數
![Page 9: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/9.jpg)
檔案名稱一定要固定嗎?
![Page 10: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/10.jpg)
寫一個簡單的通訊錄
![Page 11: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/11.jpg)
寫一個簡單的通訊錄 ( 續 )
![Page 12: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/12.jpg)
寫一個簡單的通訊錄( 續 )
![Page 13: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/13.jpg)
字元的輸入
將指定字元輸出至檔案的方法 物件名稱 <<ch; 物件名稱 .put(ch);
![Page 14: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/14.jpg)
字元的輸入 ( 續 )
![Page 15: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/15.jpg)
字元輸出
自開啟的檔案中一次讀入一個字元給指定的字元變數的方法 物件名稱 .get(ch); ch=inf.get();
![Page 16: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/16.jpg)
字元輸出 ( 續 )
![Page 17: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/17.jpg)
atoi(),itoa(),atol(),ltoa(),atof()
stdlib.hatoi() 文字轉換為整數atol() 文字轉換為長整數atof() 文字轉換為浮點數itoa() 整數轉換為字串ltoa() 長整數轉換為字串
![Page 18: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/18.jpg)
atoi( 字串變數/字串 )
![Page 19: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/19.jpg)
atol( 字串變數/字串 )
![Page 20: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/20.jpg)
atof( 字串變數/字串 )
![Page 21: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/21.jpg)
itoa( 整數變數 , 字串變數 , 進位 )
![Page 22: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/22.jpg)
ltoa( 整數變數 , 字串變數 , 進位 )
![Page 23: Chapter 7-2](https://reader033.fdocuments.net/reader033/viewer/2022052603/56814723550346895db4591d/html5/thumbnails/23.jpg)
Homework
以檔案儲存 M1 及 M2 兩個二維陣列,寫一程式讀出此檔案中的陣列,並進行陣列相加 (M1+M2) ,將結果存入 M3 陣列中,並於螢幕顯示其結果