微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。