第八章 8 1 2節練習

2021-06-23 06:44:08 字數 1248 閱讀 8533

決定開博寫文的時候,我已經看到第8章了。

這裡,從第8章開始。

當然之前的章節,會在後面補上。

*************************==== 分界線 ***********************************=

題目:練習8.1:

編寫函式,接受乙個istream&引數,返回值型別也是istream&。此函式須從給定流中讀取資料,直至遇到檔案結束標識時停止。

將讀取的資料列印在標準輸出上。完成這些後,在返回留之前。對流進行復位,使其處於有效狀態。

習題8.2:

測試函式,呼叫引數為cin。

練習8.3:

什麼情況下,夏明的while迴圈會終止?

while (cin >> i) /* ... */

個人解答: 

其實,著三道題屬於一道題,下面進行一些分析,然後給出**。

首先,需要已知乙個輸入流;然後,進行資料的讀入。

這種流其實就是我們常見的cin。當然,我們也可以建立乙個輸入流。

不過,這裡有個問題,istream物件是不能直接建立的。

這裡要想使用除了cin之外的輸入流,可以使用ifstream,難度相對較低。

為什麼呢? 這裡引用一下primer的內容(中文第五版,279頁)

「型別ifstream和istringstream都繼承自istream。因此,我們可以像使用istream物件一樣來使用ifstream和istringstream物件。」

最後,「對流進行復位,使其處於有效狀態」,這個可以直接用流中自帶的clear函式完成。

然後,**就好寫了。

#include // 為了使用istream

#include // 為了使用fistream

#include // 只是當做容器

#include // 只是當做容器

using namespace std;

istream& func(istream& in)

for (auto i : in_buf)

in.clear(); // 對流進行復位,使其處於有效狀態

return in;

}int main()

8,3 的問題,8.1已經回答了一部分了。對於cin作為輸入,理解到「直至遇到檔案結束標識時停止」,個人認為就已經夠了。標準輸入一般都是鍵盤輸入,一般情況下不會出現流狀態的問題。 (這裡不考慮極端情況)

第八章 8 3 1節練習

題目 練習8.9 使用你為8.1.2節第乙個練習所寫的函式列印乙個istringstream物件的內容。個人解答 參考書上給出的範例,這個程式應該很容易寫出來 istream func istream in for auto i in buf cout endl in.clear return in...

第八章 8 3 2節練習

題目 練習8.13 重寫本節的 號碼程式,從乙個命名檔案而非cin讀取資料。個人解答 函式實現 istream func istream in for auto i in buf cout endl in.clear return in main函式 int main 這樣就完成了對cin的替換。其...

第八章上課練習

向student表中插入資料 語法 insert into 表名 列名 values 值列表 insert into student studentno,loginpwd,studentname,gradeid,phone,address,borndate,email values s1304002...