輸入無效文字輸入的方式

2021-08-13 16:24:12 字數 788 閱讀 7640

大多數具有某種使用者介面的程式都需要處理使用者輸入。在您編寫的程式中,您一直在使用std::cin來請求使用者輸入文字輸入。因為文字輸入是如此自由的(使用者可以輸入任何東西),使用者很容易輸入不期望的輸入。

在編寫程式時,應該始終考慮使用者將如何(無意地或以其他方式)濫用程式。乙個寫得很好的程式會**使用者會如何誤用它,或者處理這些情況,或者防止它們發生在第一位(如果可能的話)。乙個處理錯誤案例的程式據說是健壯的。

在本課中,我們將特別關注使用者可以通過std(:cin)輸入無效文字輸入的方式,並向您展示處理這些情況的不同方法。

性病:cin,緩衝區,和提取

為了討論std:cin和操作符》可能會失敗,首先了解一下它們是如何工作的。

當我們使用操作符》獲取使用者輸入並將其放入變數時,這稱為「提取」。在這種情況下,操作符》相應地稱為提取操作符。

當使用者輸入響應提取操作時,該資料被放置在。乙個緩衝區(也稱為資料緩衝區)僅僅是儲存在乙個地方移動到另乙個地方時暫時儲存資料的一塊記憶體。在這種情況下,緩衝區用於在等待提取變數時儲存使用者輸入。

使用提取操作符時,會發生以下過程:

如果輸入緩衝區中已有資料,則用於提取資料。

如果輸入緩衝區不包含資料,則要求使用者輸入資料以便提取(大部分情況下都是這樣)。當使用者單擊回車時,將在輸入緩衝區放置乙個「n」字元。

運算子》 >提取盡可能多的資料從輸入緩衝區可以為變數(忽略任何前導空白字元,如空格,製表符,或「\n」)。

任何無法提取的資料都留在輸入緩衝區以進行下一次提取。

如果從輸入緩衝區中提取至少乙個字元,則提取成功。任何未提取的輸入是未來提取輸入緩衝區左。例如:

getline 輸入無效的原因

實際上你在每次輸入資料的時候會輸入乙個回車 n cin在讀入整數時候會忽略空白碰到非數字 n 時停止 cin在getline時會把 n 及之前的內容讀回來,哪怕是空行也會讀入 cin在讀入字元時會把緩衝區內當前字元讀入 不會忽略空白 cin.ignore 1000,n 的含義是把緩衝區內從當前字元開...

作為文字輸入

if nchar 0x6d 小鍵盤 0x6b 小鍵盤 0x6a 小鍵盤 0x6f 小鍵盤 下面的例子以輸入日期為例,向你演示如何用加號或減號來向文字框中輸入資料。本例的關鍵是使用vb的dateadd 函式。該函式允許你加減日期 月份及年。步驟如下 建立乙個新工程 在窗體中新增乙個文字框控制項。將下面...

如何截獲帶文字輸入的控制項的輸入法輸入結果 C

如何截獲帶文字輸入的控制項的輸入法輸入結果 c 原創沐雨迎風 最後發布於2016 05 31 19 24 15 閱讀數 2207 收藏 展開最近在開發乙個串列埠終端軟體,需要實現輸入漢字,也就是類似於超級終端那樣,輸入乙個漢字或一串漢字立馬就傳送到串列埠。對於字母,很簡單,監控按鍵就可以,如果是漢字...