辨識所輸入變數

Home Home
引用 | 編輯 星辰雪
2011-03-04 23:42
樓主
推文 x0
問題描述:
判斷輸入變數的形式

輸入說明:
可輸入整數 浮點數 字元 字串

輸出說明:
判斷輸入的是哪種形式 以int float char string 分別表示

以下為C++寫法
需要新增一個筆記本
名稱為 input
裡面可以輸入 想要辨識的
int float char string



char s ;
void type(char b,int n);

int main(int argc, char *argv[])
{
  ifstream fin; // 開啟檔案
  fin.open("input.txt"); //
  for (int i = 0; i < 1000; i++){
      fin >> s;      
      int m,k = 0;
      m = ..

訪客只能看到部份內容,免費 加入會員



獻花 x1
引用 | 編輯 totsi
2011-03-07 09:33
1樓
  
有個小問題好奇問一下~
在ptr2不是string的情況下都會在進行dot的尋找的動作。
那麼prt裡面搜尋的字串,為什麼還要多一個dot呢?

然後一點小小建議~
1.在判定是否為數字的部份,可以使用isalpha(char c)來判定是否為數字,所以也就可以不用自己建立數字字串來搜尋了。

因為純數字的部份的第一位數,絕對不會是非數字型文字,以及特殊符號。

因此在判定的時候,先用!isalpha()判定第一位數值是不是數字,是的話,就再利用strpbrk()判定是否為浮點。

不過要小心的是isalpha()只能輸入一個char,所以當multi-byte的文字要填入的時候,會造成誤判。所以這邊要換別的方式檢查。

2.還有就是,長度為一的時候也有可能為數字喔XDD。
3.檔案路徑內部可以塞dot,所以如果要建立搜尋清單的話,記得要把dot加到字串判斷裡面。但這邊會造成浮點的誤判,所以還是會建議用isalpha()來判定是否為數字。

以上大概是一些小小建議 表情

PS.看起來strpbrk()還蠻好用的說~~XDD

獻花 x2
引用 | 編輯 星辰雪
2011-03-07 23:46
2樓
  
謝謝建議

我會參考建議 測試一下
因為我也是新手@@
所以可能寫出來的程式
會不怎麼 正確....

關於 第2點
請問一下我該怎麼改進
會比較好

-----
研究了一下
發現 isalpha()
滿好用的~

獻花 x0
引用 | 編輯 totsi
2011-03-08 14:21
3樓
  
關於第2點,就是不管讀入/輸入的資料多長,一樣就是用isalpha()來判斷是否為文字。
所以其實您的作法可以不需要考慮長度了。
這樣說,會不會太籠統?XD

但以上作法,僅適用於非Multi-bytes的文字喔^^m

獻花 x0