gpt4 book ai didi

c++ - 这个数组转换是如何工作的(使用字符串将小写字母转换为大写字母)?

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:13 26 4
gpt4 key购买 nike

我让程序按预期工作,但谁能解释一下它是如何工作的?

#include <iostream>

using namespace std;

int main(void) {
int exit;
string name;
cin >> name;

for (int i = 0; i < name.length(); i++) {
// the line below is the one I don't understand
if ('a' <= name[i] && name[i] <= 'z') name[i] = char(((int)name[i]) - 32);
}
cout << name;
cin >> exit;
return 0;
}

编辑:让我重新措辞:

我不明白的是字符串到数组的处理是如何工作的,如: 'a'<= name[i] .这到底比较了什么以及如何比较?

编辑2感谢大家的快速回复,爱你们。我想通了。

最佳答案

这是一行:

 if('a'<=name[i] && name[i]<='z')name[i]=char(((int)name[i])-32);

segmentation :

 if( 'a'<=name[i] ) {
if( name[i]<='z' ) {
// name_int is a temporary, which the above code implicitly creates,
// but doesn't give a name to:
int name_int = name[i];
name_int = name_int - 32;
name[i] = char(name_int);
}
}

请注意 32 在您使用的字符编码中恰好等于 'a'-'A'

(技术上 name_int 应该是 int&& 或类似的东西,但没必要那么困惑。)

关于c++ - 这个数组转换是如何工作的(使用字符串将小写字母转换为大写字母)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511727/

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