簡體   English   中英

我在 cin.get() 中遺漏了什么嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM