2017-02-26 156 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; 
} 
相关问题