c++提供了一系列的方法,使得將讀取鍵盤輸入和在螢幕上顯示輸出(統稱為控制台輸入/輸出)的技巧用於檔案輸入/輸出(檔案i/o)非常簡單,具體如下文:
使用cin進行輸入時,程式將輸入視為一系列的位元組,其中每個位元組都被解釋為字元編碼。
也就是說——不管目標的資料型別是什麼,輸入一開始都是字元資料——文字資料。然後,cin物件負責將文字轉換為其他型別。
看以下幾種情況:
// 輸入為字元時
char ch;
cin >> ch;
這種情況下,輸入行為:38.5
輸入和目標變數都是字元,因此不需要轉換。
需要注意的是:
①這裡儲存的3,是字元3的編碼。
②執行完上述語句後,輸入佇列的下乙個字元為字元8,下乙個輸入操作將對其進行處理
// 輸入為int型別時
int n;
cin >> n;
這種情況下,cin將不斷讀取,直到遇到非數字字元。
它讀取3和8,並將句點留在佇列中。cin通過計算發現,這兩個字元對應數值38,因此將38的二進位制編碼複製到變數中。
// 輸入為int型別時
double x;
cin >> x;
這種情況下,cin將不斷讀取,直到遇到不屬於浮點數的字元。即空格。
cin通過計算發現,這四個字元對應於數值38.5,因此將38.5的二進位制編碼複製到變數x中。
// 輸入為int型別時
char word[50]
; cin >> word;
這種情況下,cin將不斷讀取,直到遇到空白字元。不需要進行任何轉換。
cin將字元的字元編碼儲存到陣列中,並在句末加上乙個空字元。
// 輸入為int型別時
char word[50]
; cin.
getline
(word,50)
;
這種情況下,cin將不斷讀取,直到遇到換行符。所有字元都被儲存到word中,並在末尾加乙個空字元。
換行符被丟棄(不留在佇列中),輸入佇列的下乙個字元是下一行中的第乙個字元。
先看一段**:
// 輸入為int型別時
#include
#include
//for file i/o
using namespace std;
intmain()
在檔案中的輸出情況如圖所示
使用檔案輸出的步驟可以總結如下:
1.包含標頭檔案。
2.建立乙個ofstream物件。
3.將該ofstream物件與乙個檔案關聯起來。 (x.open())
4.像使用cout那樣使用ofstream物件。
仍有一些小細節需要注意,在上述**中出現:
1.cout << fixed;
說明用一般方式輸出浮點型,即不使用指數表示法。
2.cout.precision(2);
設定浮點數的精度為2
3.cout.setf(ios_base::showpoint);
cout輸出會自動省略掉小數點後無用的0,即輸入38.00會顯示38。
這個操作使得0不會被隱藏。
先看一段**:
// 輸入為int型別時
#include
#include
//for file i/o
#include
//support for exit();
const
int size =60;
using namespace std;
intmain()
double value;
double sum =
0.0;
int count =0;
//number of items read
infile >> value;
//get first value from file
while
(infile.
good()
)//while input good and not at eof
if(infile.
eof())
cout <<
"end of file reached."
<< endl;
else
if(infile.
fail()
) cout <<
"input terminated by data mismatch."
<< endl;
else
cout <<
"input terminated for unknown reason."
<< endl;
if(count ==0)
cout <<
"no data processed."
<< endl;
else
infile.
close()
;return0;
}
讀取的檔案中需要先輸入以下內容:
使用檔案讀取的步驟可以總結如下:
1.包含標頭檔案。
2.建立乙個ifstream物件。
3.將該ifstream物件與乙個檔案關聯起來。 (x.open())
4.像使用cin那樣使用ifstream物件。
仍有一些小細節需要注意:
讀取檔案時可能會出現的問題。有的文字編輯器不會自動在最後一行末尾加上換行符,
所以請在輸入最後的文字後按下回車,再儲存檔案。確保讀取正確。
cout
檔案寫入
必須包含標頭檔案 iostream
必須包含標頭檔案 fstream
標頭檔案定義了乙個用來處理輸出的 ostream 類
標頭檔案定義了乙個用來處理輸出的 ofstream 類
標頭檔案宣告了乙個名為 cout 的 ostream 變數(物件)
標頭檔案宣告乙個或多個 ofstream 變數(物件),並以自己喜歡的方式對其進行命名
必須指明命名空間 std;例 std::cout
必須指明命名空間 std;例 std::(ofstream 變數)
結合使用 cout 和 << 來顯示各種型別的資料
結合使用 ofstream 物件和 << 來顯示各種型別的資料
無須關聯
需要將 ofstream 與檔案關聯起來—— open(),使用完後用close()關閉
cin檔案讀取
標頭檔案 iostream
標頭檔案 fstream
處理輸入的 istream 類
處理輸入的 ifstream 類
標頭檔案宣告了乙個名為 cin的 istream 變數(物件)
標頭檔案宣告乙個或多個 ifstream 變數(物件),並以自己喜歡的方式對其進行命名
必須指明命名空間 std;例 std::cin
必須指明命名空間 std;例 std::(ifstream 變數)
結合使用 cin 和 >> 來顯示各種型別的資料
結合使用 ifstream 物件和 >> 來顯示各種型別的資料
無須關聯
需要將 ifstream 與檔案關聯起來—— open(),使用完後用close()關閉
使用 cin 和 get() 方法讀取乙個字元,使用 cin 和 getline() 方法讀取一行字元
使用 ifstream 物件和 get() 方法讀取乙個字元,使用 ifstream 物件和 getline() 方法讀取一行字元
結合使用 cin 和 eof()、fail() 方法來判斷輸入是否成功
結合使用 ifstream 物件和 eof()、fail() 方法來判斷輸入是否成功
物件 cin 本身被用作測試條件時,如果最後乙個讀取操作成功,則被轉換為布林值 true,否則被轉換為 false
ifstream 物件本身被用作測試條件時,如果最後乙個讀取操作成功,則被轉換為布林值true,否則被轉換為false
資料參考 c++ primer plus (第六版)中文版,僅學習使用
簡單檔案輸入輸出
為了向乙個文件寫入資料,需要建立乙個ofstream型別的物件 ofstream output 為了指定要寫入的檔案。需要呼叫output物件的open函式 如下所示 output.open number.txt 此語句會建立乙個名為number.txt的檔案,如果檔案已經存在,其內容會被銷毀,並建...
簡單檔案輸入 輸出
意義與作用較簡單,不刻意說明。1.文字io和文字檔案 剛開始是文字資料,然後,cin物件負責將文字轉換為其他型別。例 輸入行是 38.5 19.2 char ch cin ch 輸入行中的第乙個字元被賦值給ch。這裡是3,存入ch的是3對應的ascii碼值。int n cin n 這裡將不斷讀取,直...
C 簡單的檔案輸入輸出
輸出到文字 include include int main 從文字輸入 include include include const int size 60 int main double value double sum 0.0 int count 0 infile value while inf...