2017-02-26 158 views
2

我想在C++中添加一個字符串的所有數字,但它不能通過所有的測試用例。我的代碼如下。在C++中添加一個字符串的所有數字

#include <iostream> 
using namespace std; 

int main() 
{ 
    string str; 
    long long int count=0; 
    cin>>str; 
    for(int i=0;i<str.length();i++) 
    { 
     count+=(str[i]-'0'); 
    } 
    cout<<count<<endl; 
    return 0; 
} 

不知道如何解決這個問題誰能幫助我?

+0

,你可以給任何樣品輸入它不工作? –

+0

在添加之前,檢查字符str [i]是否是數字。如果字符串包含數字和字母字符,則可能會出現問題。如果(ISDIGIT(STR [1])){計數+ =(STR [Ⅰ] - '0');} –

回答

0

顯示的代碼對於只包含數字的字符串(如「123」)正確工作。

還有兩個可能需要處理的情況 - 非數字和非ASCII數字(這對初學者分配的可能性較小)。

一個處理非數字的方法是將它們轉換使用條件運算符(又稱「三元經營者」)

count += isdigit(str[i]) ? (str[i]-'0') : 0; 

對於第二種情況,以零,如果你的程序必須支持所有Unicode numerals像「¼」您需要查找支持完整Unicode表的庫或自己編寫特殊情況。請注意,由於並非所有數字都代表整數,因此您需要的結果爲float

0

你可以試試這個

#include <iostream> 
using namespace std; 

int main() 
{ 
    string str; 
    long long int count=0; 
    cin>>str; 
    //ASCII value of digits 0-9 lie between 48 to 57 
    for(int i=0;i<str.length();i++) 
    { 
     if(str[i]>=48 && str[i]<=57) 
      count = count + (int)str[i] - 48; 
    } 
    cout<<count<<endl; 
    return 0; 
} 
相關問題