如输入“123.4ab56 33.2”,输出为212.6,即123.4+56+33.2的结果
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
double function1(int b1, int b2, string s); //计算整数
double function2(int b1, int b2, string s); //计算小数
int main()
{
int i, j, b1, b2;
double sum = 0;
string s;
cout << "请输入一个字符串:";
getline(cin, s);
int len = s.length(); //获取输入的字符串的长度,定义一个数组来存放各个数字
for (i = 0; i < len; ++i)
{
if ((s[i] >= 48)&(s[i] <= 57)) //无小数点
{
b1 = i;
for (j = b1; j < len; ++j)
{
if ((s[j] >= 48)&(s[j] <= 57)) b2 = j;
else break;
}
sum = sum + function1(b1, b2, s);
i = b2; //更新
}
if (s[i] == 46) //有小数点
{
b1 = i + 1;
for (j = b1; j < len; ++j)
{
if ((s[j] >= 48)&(s[j] <= 57)) b2 = j;
else break;
}
sum = sum + function2(b1, b2, s);
i = b2; //更新
}
}
cout << endl << "字符串中有效的数字的总和为:" << sum << endl <<endl;
system("pause");
return 0;
}
double function1(int b1, int b2, string s) //计算整数
{
double sum = 0;
for (int i = b1; i <= b2; ++i) sum = sum * 10 + (s[i] - '0');
return sum;
}
double function2(int b1, int b2, string s) //计算小数
{
double sum = 0;
for (int i = b1; i <= b2; ++i) sum = sum / 10 + (s[i] - '0');
return sum / 10;
}