關於老王要求輸入文字後
程式不能爆炸的簡易版解決辦法
先講原理
int x=0;
cin >> x;
//假設這時候user輸入文字a
//餵cin吃a,因為x是整數,cin會拒絕。
//拒絕後cin幹了兩件事
//1. cin.fail()會傳回true,表示從鍵盤讀取失敗
//2. 程式接下來的cin全部失效
//
//所以要開個if(cin.fail()){}來處理讀取失敗後的情況
sample code
===============================
#include<iostream>
using namespace std;
int main(){
int x=0;
cout << "請輸入一個整數:";
cin >> x;
if(cin.fail()){
cout << "error!" << endl; //讀取失敗
cin.clear(); //clear() 把錯誤訊息清掉,cin才能恢復功能
cin.ignore(); //ignore() Buffer裡面可能還有垃圾,清乾淨
// 下次cin才能讀到正確的值。
}else{
cout << "get number! x=" << x << endl;
}
return 0;
}
==============================
--
-- P_Mat <無名個人版> bbs.wretch.cc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.68.15.109