如何解决在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 举报,一经查实,本站将立刻删除。