在C ++中,s [i]-'0'和atoi是否相同?

问题描述

atoi()s[i] - '0'是否相同?

int countSubstrings(string s,int n)
{
    int count = 0,sum = 0;

    unordered_map<int,int> mp;
    mp[0]++;

    for (int i = 0; i < n; ++i) {

        sum += (s[i] - '0');
          cout << sum << endl;
        count += mp[sum - (i + 1)];
        ++mp[sum - (i + 1)];
    }
    return count;

在上面的代码中,我们可以使用atoi()函数而不使用s[i] - '0'吗?

解决方法

不,您不能那样替换它。

atoi()的参数必须是C样式的以null终止的字符串。 s[i]是单个字符,而不是字符串。因此,如果您想使用atoi(),则必须首先创建一个字符串来保存字符。

char digit[2] = "";
digit[0] = s[i];
sum += atoi(digit);

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...