c++从字符串中获取数字并进行计算

C++ take numbers from string and make calculation

本文关键字:计算 数字 获取 字符串 c++      更新时间:2023-10-16

我必须写一个程序,从字符串中取出数字,然后求这些数字的和。

示例:string test="12,20,7";结果= 50

有人能帮帮我吗?泰

 string stringNumber="12,20,7";   
 vector<int> test;
 vector<int> position;
string help;
int br=0;
int a;
for(int x=0; x<stringNumber.length(); x++)
{
    if(stringNumber.at(x) !=';'){          //save numbers
        help=stringNumber.at(x);
        istringstream istr(help);
        istr>>a;
        test.push_back(a);
        br++;
    }
    if(stringNumber.at(x) ==';'){     //save position of ","
        position.push_back(br);
        br++;
    }
}

这里有一个可能的替代方法,它不需要保存分隔符的数量和位置。它也不使用std::stringstream,尽管它可以很容易地重写为使用它来代替std::atoi()。最后,您可以将您喜欢的分隔符作为第二个参数传递给compute_sum,默认为",":

#include <string>
#include <cstdlib>
int compute_sum(std::string const& s, std::string const& delim = ",")
{
    int sum = 0;
    auto pos = s.find(delim);
    decltype(pos) start = 0;
    while (pos != std::string::npos)
    {
        auto sub = s.substr(start, pos - start);
        sum += std::atoi(sub.c_str());
        start = pos + 1;
        pos = s.find(delim, start);
    }
    if (start != pos + 1)
    {
        auto sub = s.substr(start);
        sum += std::atoi(sub.c_str());
    }
    return sum;
}

你可以这样使用它:

#include <iostream>
int main()
{
    std::cout << compute_sum("12,20,7");
}

下面是一个实例