[英]Am I missing something with cin.get()?
我正在學習 C++ 中的cin.get()
並且我試圖將兩個字符(包括空格)回顯給用戶。
在運行代碼時,它不會正確地回顯輸入。
char letter1, letter2;
cout << "Enter Letters: ";
cin >> letter1 >> letter2;
cin.get(letter1);
cin.get(letter2);
cout << "letter1 is: " << letter1 << " end.\n";
cout << "letter2 is: " << letter2 << " end.\n";
我打算輸入 2 和 3,但是,它給了我不同的結果:
輸入(由於某種原因,我不得不輸入 3 兩次)
Enter Letters:2
3
3
輸出
letter1 is:
end.
letter2 is: 3 end.
格式化輸入操作符跳過前導空格(除非這樣做被明確禁用,例如,使用in >> std::noskipws;
)。 未格式化的輸入函數不會跳過前導空格。 結果,第一次使用std::cin.get(letter1)
讀取換行符,第二次使用讀取輸入的數字。
您可以明確跳過前導空格,例如:
if ((std::cin >> std::ws).get(letter1)) {
std::cout << “read ‘“ << letter1 << “‘\n”;
else {
std::cout << “failed to read a character\n”;
}
該示例還添加了一些基本的錯誤處理:應始終預期輸入會失敗,並且需要適當處理失敗。 顯然,在嘗試讀取輸入后需要檢查故障。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.