0

文字列から数値を取得し、これらの数値の合計を作成するプログラムを作成する必要があります。

例: 文字列 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++;
    }
}
4

1 に答える 1

1

番号と区切り記号の位置を保存する必要のない別の方法を次に示します。も使用しませんがstd::stringstream、 の代わりに使用するように簡単に書き直すことができますstd::atoi()。最後に、好みの区切り文字を の 2 番目の引数として渡すことができます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");
}

そして、これがライブの例です。

于 2013-04-06T09:44:54.260 に答える