流類庫與輸入 輸出

2021-04-07 12:15:32 字數 3270 閱讀 8717

流類庫與輸入/輸出

11-1 什麼叫做流?流的提取和插入是指什麼?i/o流在c++中起著怎樣的作用?

解: 流是一種抽象,它負責在資料的生產者和資料的消費者之間建立聯絡,並管理資料的流動,一般意義下的讀操作在流資料抽象中被稱為(從流中)提取,寫操作被稱為(向流中)插入。作業系統是將鍵盤、螢幕、印表機和通訊埠作為擴充檔案來處理的,i/o流類就是用來與這些擴充檔案進行互動,實現資料的輸入與輸出。

11-2 cerr和clog有何區別?

解: cerr 標準錯誤輸出,沒有緩衝,傳送給它的內容立即被輸出,適用於立即向螢幕輸出的錯誤資訊;clog 類似於cerr,但是有緩衝,緩衝區滿時被輸出,在向磁碟輸出時效率更高。

11-3 使用i/o流以文字方式建立乙個檔案test1.txt,寫入字元「已成功寫入檔案!」,用其它字處理程式(例如windows的記事本程式notepad)開啟,看看是否正確寫入。

解: #include

void main()

程式執行後test1.txt的內容為:已成功寫入檔案!

11-4 使用i/o流以文字方式開啟上一題建立的檔案test1.txt,讀出其內容顯示出來,看看是否正確。

解: #include

void main()

程式執行輸出:

已成功寫入檔案!

11-5 使用i/o流以文字方式開啟上題建立的檔案test1.txt,在次此檔案後面新增字元「已成功新增字元!」,然後讀出整個檔案的內容顯示出來,看看是否正確。

解: #include

}程式執行輸出:

已成功寫入檔案!已成功新增字元!

11-6 定義乙個dog類,包含體重和年齡兩個成員變數及相應的成員函式,宣告乙個例項dog1,體重為5,年齡為10,使用i/o流把dog1的狀態寫入磁碟檔案,再宣告另乙個例項dog2,通過讀檔案把dog1的狀態賦給dog2。分別使用文字方式和二進位制方式操作檔案,看看結果有何不同;再看看磁碟檔案的ascii碼有何不同。

解: 以兩種方式操作,程式執行結果一樣,但磁碟檔案的ascii碼不同,使用二進位制方式時,磁碟檔案的ascii碼為05 00 00 00 0a 00 00 00,使用文字方式時,磁碟檔案的ascii碼為05 00 00 00 0d 0a 00 00 00,這是因為此時系統自動把0a轉換為了0d 0a。

#include

class dog

~dog(){}

int getweight()const

void setweight(int weight)

long getdaysalive()const

void setdaysalive(long days)

private:

int itsweight;

long itsnumberdaysalive;

};int main() // returns 1 on error

dog dog1(5,10);

fout.write((char*) &dog1,sizeof dog1);

fout.close();

ifstream fin(filename);

// ifstream fin(filename,ios::binary);

if (!fin)

dog dog2(2,2);

cout << "dog2 weight: " << dog2.getweight() << endl;

cout << "dog2 days: " << dog2.getdaysalive() << endl;

fin.read((char*) &dog2, sizeof dog2);

cout << "dog2 weight: " << dog2.getweight() << endl;

cout << "dog2 days: " << dog2.getdaysalive() << endl;

fin.close();

return 0;

}程式執行輸出:

please enter the file name: a

dog2 weight: 2

dog2 days: 2

dog2 weight: 5

dog2 days: 10

11-7 觀察下面的程式,說明每條語句的作用,看看程式執行的結果。

#include

using namespace ::std;

void main()

解: //1儲存現在的格式化引數設定,以便將來恢復這些設定;

//2 把對齊方式由預設的右對齊改為左對齊;

//3 把輸出域的寬度由預設值0改為10;

//4 清除對齊方式的設定;

//5 更改浮點數的顯示設定;

//6 恢復原來的格式化引數設定。

程式執行輸出:

812|813 815

8.31e+02

11-8 提示使用者輸入乙個十進位制整數,分別用十進位制、八進位制和十六進製制形式輸出。

解: #include

void main()

程式執行輸出:

請輸入乙個十進位制整數:15

這個數的十進位制形式為:15

這個數的八進位制形式為:17

這個數的十六進製制形式為:f

解: //b.cpp

#include

#include

#include

void main(int argc, char* argv)

ofstream out(argv[1]);

const int bsz = 100;

char buf[bsz];

int line = 0;

while(textfile.getline(buf, bsz))

}編譯後執行程式b text1.txt

執行前text1.txt的內容為:

aaaaaaaaaaaa

bbbbbbbbbbbb

cccccccccccc

dddddddddddd

eeeeeeeeeeee

ffffffffffff

gggggggggggg

hhhhhhhhhhhh

執行後text1.txt的內容為:

1. aaaaaaaaaaaa

2. bbbbbbbbbbbb

3. cccccccccccc

4. dddddddddddd

5. eeeeeeeeeeee

6. ffffffffffff

7. gggggggggggg

8. hhhhhhhhhhhh

流類庫與輸入 輸出

引用自 i o流的概念 當程式與外界環境進行資訊交換時,存在著兩個物件,乙個是程式中的物件,另乙個是檔案物件,流是一種抽象,它負責在資料的生產者和資料的消費者之間建立連線,並管理資料的流動。程式建立乙個流物件,並指定這個流物件與某個檔案物件建立連線,程式操作流物件,流物件通過檔案系統對所連線的檔案物...

流類庫與輸入輸出 二

如果建構函式或open成員函式開啟了該檔案,輸出流析構函式自動關閉乙個流的檔案。6 錯誤處理函式 錯誤處理成員函式的作用是在寫到乙個流時進行錯誤處理。各函式及其功能如下表所示。錯誤處理成員函式及其功能 函 數 功能及返回值 bad 如果出現乙個不可恢復的錯誤,則返回乙個非0值 fail 如果出現乙個...

c 流類庫與輸入輸出

c與c 輸入輸出對比 c中的printf函式只能輸出系統預定義的型別,而c 可以輸入輸出標準型別和自定義型別的資料。優點 可以防止格式控制符輸入輸出型別資料不一致的錯誤 可以通過過載的方式對自定義的資料進行輸入輸出。c 的輸入輸出流 流是指資料從乙個源流到乙個目的流,負責資料的源到目的的之間建立聯絡...