该程序为什么得不出正确答案

img

  • cin>>str:遇到空格将停止输入
  • getline():获得完整一行字符串
    所以不能用 cin获得输入

干嘛不直接写'0'和'9'


#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    int sum = 0;
    getline(cin, str);
    //此处可以这样写 ,由于题目中输入的是带空格的字符串,
    //直接用cin遇到空格会结束输入,会出错,当然如果有问题,你反馈,我再给你另一种方式试试
    for(int i = 0; i <str.size(); i++) {
        if(str[i] >= '0' && str[i] <= '9') sum++;
    }
    cout << sum;
    return 0;
}

有用记得采纳哟



```c++
#include<stdio.h>
#include<math.h>
using namespace std;


const int N = 254;
char str[N+1];
int main() {

    int s=0;
    gets(str);

    for(int i=0;i<255;i++) {
        if (str[i]>=48 && str[i]<=57) s++;
    }
    cout<<s<<endl;
    return 0;
}

```

把 48 和 57 改成:
'48' 和 '57'
此处需要用字符格式,比较的是字符的ASCII码,而'48'的ASCII码并不是48,所以不正确