【发布时间】:2022-01-15 00:20:51
【问题描述】:
我很难转换字符串中每个字符的 ASCII 对应项,
我的目标是转换每个单词的平均值
例如:
如果用户输入“love”,代码将返回 54,
问题是这段代码在一个循环中,例如,如果用户输入;
第一个词:“爱”
第二个词:“爱”
代码应该返回;
54
54
但我的代码返回 108
我想问题出在这部分 sum += static_cast<int>(compute - 64); 但我不知道解决我的问题的正确方法
for(int x = 1; x <= numofinput; x++){
cout << "Word no. " << x << ": ";
getline(cin,words);
for(auto compute : words){
if(isalpha(compute)){
compute = toupper(compute);
sum += static_cast<int>(compute - 64);
}
}
}
【问题讨论】:
-
为什么不立即
cout而不是将值添加到sum? -
"Word no. "和getline(cin,words);...您要阅读一个单词还是单词列表?auto compute使compute成为char。这是你所期望的吗? -
不要使用幻数。而不是
64,写'@'- 或更好:'A' - 1 -
std::cin >> word;会读一个单词(并跳过空格) -
你正在对所有内容求和,然后在你应该为每个单词做的时候打印最终的总和。