gpt4 book ai didi

c++ - 在 C++ 中正确切片字符串字符

转载 作者:行者123 更新时间:2023-12-05 00:42:56 25 4
gpt4 key购买 nike

我想在我的输入中计算数字 1,例如 111 (1+1+1) 必须返回 3101必须返回2 (1+1)为此,我开发了如下示例代码。

#include <iostream>
using namespace std;

int main(){
string S;
cout<<"input number";
cin>>S;
cout<<"S[0]:"<<S[0]<<endl;
cout<<"S[1]:"<<S[1]<<endl;
cout<<"S[2]:"<<S[2]<<endl;
int T = (int) (S[0]+S[1]+S[2]);
cout<<"T:"<<T<<endl;
return 0;
}

但是当我执行此代码时,我输入 111 例如,我的预期返回是 3 但它返回 147

[ec2-user@ip-10-0-1-187 atcoder]$ ./a.out
input number
111
S[0]:1
S[1]:1
S[2]:1
T:147

这有什么问题?我完全是新手,所以如果有人有意见,请告诉我。谢谢

最佳答案

这是因为 S[0] 是一个 char。您正在添加这些数字的字符值,而不是数值。在 ASCII 中,数字从值 48 开始。换句话说,您的 3 个值中的每一个都正好是 48 太大。

所以你不是在做 1+1+1,而是在做 49+49+49

从字符值转换为数字最简单的方法是减去48,即0的值。

例如,S[0] - '0'.

关于c++ - 在 C++ 中正确切片字符串字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71967878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com