C++ Primer 第1章

第1章-開始

cin的緩衝區

std::cin >> v1;輸入6<Enter>,其中空格、回車、TAB等被認爲是結束條件,“結束”是指從緩衝區刷新到內存,也就是交給程序去執行,cin會識別這些標誌,然後丟掉它們。
比如輸入6 7<Enter>,因爲6後面有空格,所以6會被從緩衝區刷新到程序,賦給v1,而7會被留在緩衝區,等待下次調用cin時,cin查看到緩衝區有數據,就不會從外界輸入,而是直接從緩衝區讀取7,見下面這個例子。

std::cin >> v1 >> v2;輸入6 7時,6被賦給了v1,7被賦給了v2。這個代碼等價於(std::cin >> v1) >> v2;或者std::cin >> v1; std::cin >> v2;因爲緩衝區還有7 (Enter),cin就會直接讀取,故v2爲7。

文件結束符

UNIX和Mac下鍵盤輸入文件結束符(EOF):ctrl+d,Windows下:ctrl+z。有關這個的使用,可以見下面例子:

int sum = 0, value = 0;
while (std::cin >> value)
	sum += value;
std::cout << "Sum is: " << sum << std::endl;

輸入3 4 5 6 (ctrl+d),然後回車;程序輸出Sum is: 18。第2行的while循環條件的false條件爲EOF,像Enter等因爲是緩存區刷新標誌,而且cin會自動忽略這些標誌,不做處理,所以不會使while判斷語句爲false。
除了EOF,也可以輸入一個無效的輸入,比如要求輸入int,可以輸入個字符,就會自動判定爲結束。

文件重定向

比如已經編譯結束gcc test.cpp -o test生成test執行文件,我們不光可以從鍵盤上輸入數據,也可以從文件中輸入,將結果保存到文件中。test < inputfile > outputfile

循環

for循環也可以這樣寫:

for(Sales_item item; cin >> item; cout << item << endl) {
	sum_item += item;
}

其中cin >> item作爲判斷條件,當輸入EOF或無效字符時爲false,循環結束。而第3部分也可以不對變量做操作,如i++等,而只是打印輸出等顯示語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章