cin讀取數字時遇到字元的情況

2021-08-10 18:40:07 字數 857 閱讀 6448

cin讀取數字時遇到字元

當定義乙個int變數,用cin輸入時,如果輸入的是乙個字元,會發生以下4中情況:

1.n的值變成0

2.不匹配的輸入被留在輸入流中

3.cin物件的乙個錯誤標記被設定,即cin.fail()返回true

4.對cin的方法呼叫返回false,即(cin>>n)返回的是false

#includeusing namespace std;

int main()

當發生這種情況時,cin物件的乙個錯誤標記被設定。設定這個標記後,不再進行輸入。若要後續還想再輸入,可以使用cin.clear()清空標記。如下:

#includeusing namespace std;

int main()

{ int n;

if(cin>>n) cout<<"yes\n";

else cout<<"no\n";

cin.clear(); //清空標記

cin.get(); //吸收上一次輸入的最後的回車

int b;

cin>>b;

cout《注意當輸入的是數字的時候,輸入流中會自動忽略空格回車等控制字元。只有當輸入的是字元時,才會保留'\n'在輸入流中。

int a,b;

cin>>a;

cin>>b;

這種情況下,如果輸入的都是數字,及時輸入中有回車,但輸入流中不會保留回車,即不會把'\n'輸入給b,而是把第二個數輸入給b。如果第乙個輸入的是字元,則'\n'會保留在輸入流中,此時在執行cin>>b語句時,會把'\n'輸給給b。。。。

自己多試試體會一下就明白了。。

golang讀取http的body時遇到的坑

當服務端對http的body進行解析到map string inte ce 時,會出現cli傳遞的是int型別,而服務端只能斷言成float64,而不能將接收到的本該是int型別的直接斷言為int nil 設定請求頭 注意,這裡斷言成int型別會出錯 列印型別,發現product id是float6...

更新ORACLE資料時遇到鎖死情況的處理

更新oracle資料時遇到鎖死情況的處理 我們在運算元據庫的 時候,有時候會由於操作不當引起資料庫表被鎖定,這麼我們經常不知所措,不知怎麼給這些表解鎖,在pl sql developer工具的的選單 tools 裡面的 sessions 可以查詢現在存在的會話,但是我們很難找到那個會話被鎖定了,想找...

讀取多行字串時遇到的少讀一行的問題

includeint parsehex const char hexstring else sum sum 16 k i return sum int readline char buf,int bufsize buf i c void test intmain return0 注意到 在讀入行數之...