C ++将字符串数组转换为整数,然后求和整数数组

时间:2015-10-31 16:50:35

标签: c++

我需要将用户输入整数传递给sumTotal(& userInt)函数 如果int是2341,我需要求和2 + 3 + 4 + 1 = 10并将值返回给main!

        IAsset asset = getAssetByID(dbAsset.containerId);
        IMediaProcessor indexer = GetLatestMediaProcessorByName(_mediaProcessorName);
        IJob job = _context.Jobs.Create("MediaIndex Job - " + dbAsset.name);
        string configuration = "";
        ITask task = job.Tasks.AddNew("MediaIndex Task", indexer, configuration, TaskOptions.None);

        // Specify the input asset to be indexed.
        task.InputAssets.Add(asset);  <---- need to pass IAssetFile here

3 个答案:

答案 0 :(得分:0)

字符串是char的数组。要将char转换为int,您必须'char' - '0'

我写了几个版本。 选择你最喜欢的那个。

#include <iostream>
#include <string>

int main()
{
    std::string str = "1234";
    int sum = 0;

    //pre C++11
    for (std::string::iterator i = str.begin(); i != str.end(); ++i)
        sum += (*i - '0');

    //C++11
    sum = 0;
    for (auto i = str.begin(); i != str.end(); ++i)
        sum += (*i - '0');

    //ranged-for
    sum = 0;
    for (const auto &i : str)
        sum += (i - '0');

    std::cout << "Sum: " << sum;

    std::cin.get();
}

答案 1 :(得分:0)

一种简单有效的方法是将数字保存为字符串并一次访问一个数字。

请注意等式:

digit_number = digit_character - '0';

另外,知道在对数字求和时,顺序无关紧要。所以,我们有:

sum = 0;
for (i = 0; i < string.length(); ++i)
{
  sum += string[i] - '0';
}

答案 2 :(得分:0)

如果你想要递归,你不需要任何字符串工作,试试这个:

#include <iostream>
using namespace std;

int recSum(int);
int main(){
    int i;
    cin>>i;
    cout<<recSum(i);
    return 0;
}

int recSum(int i){
    return i==0?0:i%10+recSum(i/10);

}

数组版本的递归

#include <iostream>
using namespace std;

int recSum(int* ary,int len){
    return len<0?0:ary[len]+recSum(ary,len-1);
}
int main(){
    int j[]={1,2,3,4,5,6,7,8,9,10};
    cout<<recSum(j,9);
}