電腦遊戲製作開發設計論壇 首頁 電腦遊戲製作開發設計論壇
任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入 

Google
[c++小技巧] 判斷輸入是否為數字 [改]

 
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念
上一篇主題 :: 下一篇主題  
發表人 內容
babu61509
散播福音的祭司


註冊時間: 2007-08-26
文章: 142

681.01 果凍幣

發表發表於: 2008-5-21, AM 11:47 星期三    文章主題: [c++小技巧] 判斷輸入是否為數字 [改] 引言回覆

因為在別的地方看到有人在問

cin >> 整數變數;

如果輸入的不是整數,那麼輸出的時候會出錯,能不能避免之類的0.0

那時候我回答他 用 try catch起來就好˙口˙(無腦回答-.-,問題都沒看清楚XDD)

後來看他回了有沒有別的方法...於是 MSDN + GOOGLE大神就出現了以下東西 :

代碼:

#include <iostream>
using namespace std;

void main()
{
   int num;   // 宣告整數

   while( (cout << "請輸入整數 : ") && (cin>>num)==0){      // 顯示 字串 和 判斷輸入是否為數字
         cin.clear();   // 清除已取得資料
         // fflush(stdin);   // 清除鍵盤緩衝區
         rewind(stdin);
         cout << "輸入格式錯誤!請重新輸入\n";
   }

   cout << num << endl;
}


while 那行很複雜是因為放在一起比較短 (毆
基本上就是這樣0.0
閒閒的可以去試試看如果沒有cin.clear();或fflush(stdin);跑起來會怎樣.

修改 :
happylin 說 fflush 只有 暈倒死 可用0.0
那改rewind吧0 口0
不過pipe也還是不能用._.

補充 :
其實這個還是有點小bug,只要前面輸入數字後面隨便打,他還是會取到前面的數字而不會說 格式錯誤 0.0

_________________
已經畢業了!!


babu61509 在 2008-5-21, PM 5:05 星期三 作了第 3 次修改
回頂端
檢視會員個人資料 發送私人訊息
happylin
略有貢獻的成員


註冊時間: 2007-07-26
文章: 70

127.34 果凍幣

發表發表於: 2008-5-21, PM 2:35 星期三    文章主題: 引言回覆

fflush(stdin);
這不是標準的用法.
這只有在windows 下才會正常. 且只能清除windows 下的keyboard input
如果是用pipe 轉向的也沒用 example
c:>input.exe < a.txt

函數庫手冊上(非MS 版的說明)
有寫fflush(FILE *) 只能flush output stream . 對input stream 的動作是無定意的.
所以. 用此法還是會有問題.

較好的設計方法. 老實說我也不知
我都是用最笨的方法. 讀入一整個字串. 在去判斷是否全為數字.
回頂端
檢視會員個人資料 發送私人訊息
happylin
略有貢獻的成員


註冊時間: 2007-07-26
文章: 70

127.34 果凍幣

發表發表於: 2008-5-22, AM 9:37 星期四    文章主題: 引言回覆

在程式設計師論壇找到的

代碼:

#include <iostream>
int main()
{
    int i;
   
    while (std::cout << "please input a interget: ",!(std::cin >> i))
    {
          //錯誤:輸入非數字
          std::cout << "your input is error \n";
          std::cin.clear();
          std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');    // 清空緩衝區.
    }
    std::cout << "Your input is " << i;
    return 0;
}
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    電腦遊戲製作開發設計論壇 首頁 -> 遊戲程式初級班:語法及基礎概念 所有的時間均為 台灣時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
可以 在這個版面附加檔案
可以 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作