大家好,所以我讀了std :: cin.get()func並閱讀我們用它來捕獲輸入任何輸入後輸入的換行符char安慰。但是當我編寫一個非常基本的小程序時,我很困惑,並且無法理解它的行爲。試圖瞭解std :: cin.get()
所以我的程序是用於C++ primer plus的練習。不管怎樣的代碼如下:
#include <iostream>
#include <cstring>
void countWords() {
char word [100];
char wordDone [] = "done";
int count = 0;
std::cout << "Enter words (to stop, type the word done): \n";
std::cin >> word;
while (strcmp(word, wordDone) != 0) {
std::cin >> word;
count += 1;
}
std::cout << "You entered a total of " << count << " words.";
std::cin.get();
std::cin.get();
}
int main() {
countWords();
std::cin.get();
return 0;
}
現在,這裏的問題是,當我運行上面的代碼,屏幕上給了我正確的輸出,但它消失,不用等我進入回報。
但是,當不是創建上述countWords()函數時,如果我在main()函數中編寫了整個代碼,它完美地工作,這就是令我困惑的東西。
根據我的理解,當我在控制檯中輸入char數組並按回車時,緩衝區將控制檯數據和換行符保存在隊列中,while循環處理完畢並顯示cout後,返回被吸收由第一個std :: cin.get()。那麼程序應該等待我輸入另一個返回值,然後再由第二個cin.get()來吸取它,並且它也應該問我另一個返回值,因爲main函數中也有一個cin.get()。但由於某些原因,我無法弄清楚,輸出屏幕就會消失。
有什麼意見或解釋?
你應該只需要按兩次回車鍵,根據你所描述的。 – 2014-11-22 19:05:44