cin輸入型別與資料型別不符檢查

2021-08-01 05:33:42 字數 718 閱讀 6579

istream類過載了抽取運算子<< ,>>,  所以cin >> 支援c++內建的所有基本資料型別。cin物件將標準輸入表示為位元組流,然後根據抽取 運算子<

不同版本的抽取運算子檢視輸入流的方法是相同 的。如果輸入的前面一部分字元為空白(空格、換行符、和製表符),他們會跳過,直到遇到非空白字元。當輸入沒有滿足程式期望的時候,比如對於乙個int型別的變數a,卻輸入字元h,這種情況下,抽取運算發將不會改變變數a的值,並返回0,經常被放在迴圈條件中來終止迴圈。

測試**如下:

[cpp]view plain

copy

//check_it.cpp -- checking for valid input

#include 

intmain() 

cout <

<

cout <

<

return

0;  

}  

執行效果如圖:

由於輸入被緩衝。因此通過鍵盤輸入的第二行在使用者按下回車鍵之前,不會被傳送給程式。然而迴圈在字元z處停止了對輸入的處理,因為z不予int型別相匹配。輸入與預期格式不匹配反過來將導致表示式cin>>input的返回值為false,因此while迴圈被終止。

輸入 輸出與資料型別

輸出 console.write 不換行 console.writeline 換行 輸入 console.readline 括號裡不寫任何東西 接受一下直至接收到回車命令之前的所有字元 乙個等號表示賦值號 加號在遇到字串型別時時拼接作用 案例 輸入姓名,年齡,工作單位,整合成一句流暢的話 1 con...

解決cin因為輸入錯誤的資料型別進入死迴圈的問題

問題 如果按照下述的 來檢查使用者的輸入是否合法,是不夠的,當輸入乙個與期望不同的資料型別後,cin的狀態會變成fail,當下次執行cin會直接跳過,這樣就變成了死迴圈。int a while 1 解決 先用cin.clear 將cin的狀態恢復初始態,再使用getchar 將快取清空 必要的一步,...

SQL SERVER資料型別與C 資料型別對照表

sql server型別 c 型別 精確數字 bigint 從 2 63 9223372036854775808 到 2 63 1 9223372036854775807 的整型資料 所有數字 儲存大小為 8 個位元組。int64 int從 2 31 2,147,483,648 到 2 31 1 2...