gpt4 book ai didi

c++ - 在 char 上使用 toupper 会返回 char 的 ascii 码,而不是字符?

转载 作者:太空狗 更新时间:2023-10-29 20:02:03 25 4
gpt4 key购买 nike

int main()
{

char hmm[1000];

cin.getline(hmm, 1000);
cout << hmm << endl; //this was to test if I could assign my input to the array properly
for (int sayac = 0; hmm[sayac] != '@'; sayac++) {
if (!isdigit(hmm[sayac])) {
if (islower(hmm[sayac]))
cout << toupper(hmm[sayac]);
else if (isupper(hmm[sayac]))
cout << tolower(hmm[sayac]);
else
cout << hmm[sayac];
}
}

“编写一个程序,将键盘输入读取到@符号并回显输入除数字外,将每个大写字符转换为小写,反之亦然。(不要忘记 cctype 家族。)“

我正在做入门书中的这个练习。但是当我运行它时,它返回字符的 ascii 顺序,而不是字符的大写/小写版本。无法找出问题所在。有人可以告诉我为什么吗?

(我可能还有其他关于练习的问题,如果有请不要纠正。我想自己解决它(除了我解释的问题),但我无法检查其他问题,因为我有这个问题。

最佳答案

写作时

std::cout << toupper('a');

发生以下情况:

  1. int toupper(int ch) 被调用,并返回一个整数,其值为'A' (0x41)。
  2. std::basic_ostream::operator<<(std::cout, 0x41) 被称为,也就是int (2) 自 int 以来过载已提供。

总的来说,它打印出“65”。

作为解决方案,您可以将大写字母转换回 char :

std::cout << static_cast<char>(toupper('a'));

关于c++ - 在 char 上使用 toupper 会返回 char 的 ascii 码,而不是字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47576372/

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