C 簡單檔案輸入 輸出

2021-09-02 18:19:40 字數 4374 閱讀 7093

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...