2012-04-19 57 views
1

我需要此if語句的幫助。我試圖讀取每個字符,看看它是否是一個數字。如果它不是一個數字,那麼說它不是一個數字,如果它繼續讀到下一個字符。例如如果用戶輸入54gr 21 gr42 134 3f3。唯一會cout是21和134.逐字閱讀以查看它是否爲數字

#include <iostream> // libraries 
#include <iomanip> 
#include <string> 

using namespace std; 

int main() 
{ 

    char string[80]; 
    // char num[80]; 
    // char good[80]; 
    cout << "enter a string "; // prompting user 
    cin.getline(string,80); // geting line 
    // int i = 0; 
    // int j = 0; 
    int count = 0; 
    { 

    while(string[count] != '\0') { 

     if(string[count] >= '0' && string[count] <= '9') 
      cout << count << endl; 
      } 
      ++ count; 
    } 
    } 
+0

你快到了。問題是什麼? – 2012-04-19 20:02:50

+0

數字有多種形式。你不處理小數點或指數。本地化是否重要?如果這變得更加複雜。另外,爲什麼使用char aray當你在C++的土地,並可以使用'std :: string'?我甚至不知道問題是什麼。如何顯示是*不工作的輸入? – 2012-04-19 20:04:13

回答

2

我不會嘗試按字符做這個字符。問題是你現在不知道5真的是一個數字的一​​部分,直到你讀到非空格字符串的末尾來驗證所有的內容都是數字的合法部分。

因此,我認爲你需要/希望將輸入分成「單詞」,然後檢查每個完整單詞是否可以完全轉換爲數字。你可以只讀some_stream >> some_string;

一旦你有一個「單詞」,你檢查你是否可以完全轉換爲一個數字。假設你需要整數,你可以使用strtol(嘗試)將其轉換爲數字。這會給你一個指向它不能轉換爲數字的第一個字符的指針。如果這不是字符串的結尾,那麼「單詞」不是一個數字(即使它以/包含一個或多個數字開頭)。