gpt4 book ai didi

c++ - toupper 返回整数而不是字符

转载 作者:行者123 更新时间:2023-12-01 03:14:51 25 4
gpt4 key购买 nike

对于以下功能

void display()
{
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
if (board[i][j] < 84 && (i+j)%2 == 0)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x70);
else if (board[i][j] < 84 && (i+j)%2 == 1)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0xc0);
else if (board[i][j] > 97 && (i+j)%2 == 0)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0x7c);
else if (board[i][j] > 97 && (i+j)%2 == 1)
SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), 0xc7);
cout << " " << toupper(board[i][j]) << " ";
}
cout << endl;
}
}

而不是为 char board[8][8] 返回字符,它返回整数所以我的输出看起来像
 82  78  66  81  75  66  78  82

80 80 80 80 80 80 80 80

32 32 32 32 32 32 32 32

32 32 32 32 32 32 32 32

32 32 32 32 32 32 32 32

32 32 32 32 32 32 32 32

80 80 80 80 80 80 80 80

82 78 66 81 75 66 78 82

而不是预期的输出
 R  N  B  Q  K  B  N  R

P P P P P P P P




P P P P P P P P

R N B Q K B N R

我也试过声明一个字符 a = board[i][j]; cout << toupper(a);试图将变量类型确认为字符并收到相同的输出。

这是一个类(class)的作业,所以我不期望有太多帮助,我只想知道为什么我的函数返回整数而不是字符,以便我知道我的错误是什么以供将来引用,Google 没有太大帮助。这是toupper的某种范围问题吗?

最佳答案

toupper 的目的是它可以用英语以外的其他语言工作,因此它必须支持大于 8 位 char 的输入和输出。 ,因此应该返回一些可以转换为 unicode 或 UTF 字符的东西。

只需将其转换为 char可能是以后有问题的代码的来源,这取决于您的软件的目的是什么。

看看这个关于如何将它用于宽字符和 unicode 的问题。

Convert a unicode String In C++ To Upper Case

关于c++ - toupper 返回整数而不是字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963248/

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