字符串中数字子串的求和

#include 
#include 
using namespace std;
int numSum(string str)
{
    int res = 0;
    int num = 0;
    bool posi = true;
    int cur = 0;
    for(int i = 0; i < str.size(); ++i)
    {
        cur = str[i] - '0';
        if(cur < 0 || cur > 9)
        {
            res += num;
            num = 0;
            if(str[i] == '-')
            {
                if(i - 1 > -1 && str[i - 1] == '-')
                    posi = !posi;
                else
                    posi = false;
                } else {
                    posi = true;
                }
        } else {
            num = num * 10 + (posi ? cur : -cur);
        }
    }
    res += num;
    return res;
}
int main()
{
    string str = "A-1B--2C-D6E";
    cout << numSum(str) << endl;
}

你可能感兴趣的:(第五章,程序员代码面试指南c++实现)