C++中如何将输入的字符串中的数字提取出来做加减法

char shu[100];
scanf("%s",shu);
int sum;
sum+=字符串中的数字
这个应该怎样完成?当我提取了字符串中的数字后,但发现字符串中的数字是以ASIii的形式运算的,这该怎么办?

#include "stdafx.h"
#include <string.h>

void main()
{
    char shu[100];
    scanf("%s",shu);
    int sum;
    sum=0;
    int len=strlen(shu);
    for(int i=0; i<len; i++)
    {
        if( shu[i]>='0' && shu[i]<='9')
        sum+=shu[i]-'0';
    }
    printf("sum=%d\n",sum);
    getchar();
    getchar();
}


用库函数啊,或者直接用字符串运算完后再转换成数字,atoi()

#include "stdafx.h"
#include

void main()
{
char shu[100];
scanf("%s",shu);
int sum;
sum=0;
int len=strlen(shu);
for(int i=0; i {
if( shu[i]>='0' && shu[i]<='9')
sum+=shu[i]-'0';
}
printf("sum=%d\n",sum);
getchar();
getchar();
}

用函数atoi(shu)转换下就行

用if一个一个元素的判断,如果是数字,就把后面的元素向前移动,覆盖掉数字,就ok啦

楼上的只是整数,如果是一百位就gg了
楼主可以百度一下大数加法,acm入门基础题

如果你字符串里全是数字 来个循环 每个字符-48 用整形接收 然后再来个循环 将每个数字按位组合 变成真正的数值 就ok了

进行for循环每一位,i=0;从头开始遍历,如果数大于10,则continue

先把非数字字符转换为同一个非数字字符,的到一个新的字符数组,然后用split函数把字符数组分割后的结果保存到一个数组中,遍历数组进行运算。
如12ad45368zz85第一次变为12..45368..85
第二次变换为数组12,45368,85.遍历数组运算就得到结果了。
手机打字太累,无法提供代代码请包容。

判断好之后直接转成int型就OK的啦

再建立一个字符串数组,根据你的第一个数组里每个字符的下标判断ASCII码的范围是数字字符,就提取出来,最后用转型函数转型,或者自己写一个转型函数

我突然看到你已经提取出数字了,这就好办了,你提取是ASCII码,那你就用提取的数减48不就好了,48是0对应的十进制ASCII码,不就得到你要求的数字,如果是其它进制的ASCII码,你可以转换一下进制啊

自己百度sscanf和sprintf