決定開博寫文的時候,我已經看到第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...