看板 C_and_CPP 關於我們 聯絡資訊
恕刪 原po的問題其實在寫互動式程式時常會遇到 基本型就是,我要對不同的輸入做反應 但當使用者的輸入不符合規定時,希望讓他重新輸入 一般的作法就是用一個while把判斷式合不合規定的判斷式包起來 比如說 你本來寫 (因為怕型別不合,所以輸入一律當成字串) string a; cin>>a; if(a=="1") { //do something } else if (a=="22") { //do something } 就可以改成 string a; while(1) { cin>>a; if(a=="1") { //do something break; } else if (a=="2") { //do something break; } else { cout<<"please enter again!\n"; } } 不過如果是寫成switch case 就會麻煩一點(因為沒有辦法從case中直接跳出來) 大概會寫成 char a; flag=1; while(flag==1) { cin>>a; switch(a) { case 1: //do something flag=0; break; case 2: //do something flag=0; break; default: cout<< " please enter again \n"; } } 然後如果一次輸入好幾個字元的話它會一次讀一個 如果希望每次都重新輸入的話,就要先把stdin清掉 以上應該算是最簡單的處理方法了吧 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.57.112.182
VictorTom:小弟我記得, 輸入串流不清掉的話, 餵了一個錯誤型態的 10/04 02:04
VictorTom:輸入(比如要數字給abc), 它就會一直卡在那邊啊@_@" 10/04 02:05
mantour:哈哈 對 10/04 09:26
改了 ※ 編輯: mantour 來自: 61.57.112.182 (10/04 10:18)
mantour:謝謝V大的提醒 10/04 10:22