為避免錯誤字元導致輸入失敗,在輸入失敗之時,清除錯誤標誌並且忽略錯誤字元,之後重新輸入,直至輸入正確為止。
使用std::cin.seekg方法移動輸入序列指標至序列末尾,**如下所示:
#include
intmain()
cin.
ignore()
.get()
;// 忽略enter鍵產生的換行符並等待enter鍵以暫停程式
return0;
}
經測試,在以下兩個環境之中,對於預設緩衝區移動輸入序列指標失敗,而輸入流設定失敗標誌(failbit)。
作業系統
編譯工具
windows 10
visual studio 2017
ubuntu 18.04
gcc 7.4
**解析
運用std::cin.ignore方法從輸入序列中提取字元並丟棄之,**如下所示:
#include
#include
intmain()
cin.
ignore()
.get()
;return0;
}
輸入流物件std::cin的成員函式ignore用於忽略輸入序列剩餘字元,直至忽略限定數量的字元,或者遇到分隔字元,出錯或者到達序列末尾為止,分隔字元也被忽略。
**解析
APUE unix出錯處理
當unix函式出錯時 系統呼叫 常常會返回乙個負值,而且整型變數errno通常被設定為含有附加資訊的乙個值。檔案中定義了符合errno以及可以賦予它的各種常量,這些常量都以字元e開頭。另外,unix系統手冊第2部分的第1頁intro 2 列出了所有這些出錯常量。在linux中,出錯常量在errno ...
出錯處理函式
我們知道,系統函式呼叫不能保證每次都成功,必須進行出錯處理,這樣一方面可以保證程式邏輯正常,另一方面可以迅速得到故障資訊。出錯處理函式 include include char strerror int errnum see notes errnum 傳入引數,錯誤編號的值,一般取 errno 的值...
linux 出錯處理
當linux 系統出錯時候,常返回乙個負值記錄在變數errno中。對於errno的使用用兩條規則 1 如果沒有出錯,其值不會被清除 2 任一函式不會將errno置0 c標準有2個函式列印出錯日誌 include char strerror int errnum 此函式講errno 對映成乙個字串,返...