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 注意到 在讀入行數之...