无符号字符打印其 ASCII 值



我C++有一个程序,它逐个字节地从二进制文件中读取,然后将其作为字符输出到控制台。

使用unsigned char作为类型后,控制台会打印它的 ascii 值,这是我没想到的。

如何让它打印字符而不是它的 ascii 值?

可重现的代码:

#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
unsigned char a;
a = 'A';
cout << (a > 31 ? a : '.');
}

最新的问题是由条件表达式中的类型混合引起的。

unsigned char a;
...
cout << (a > 31 ? a : '.');

此表达式具有 int 类型,因为两个 char 类型都不够大,无法包含另一个类型的所有值。(抱歉,如果前面的陈述不完全准确,我懒得阅读细则。

只需转换一个字符,以便条件表达式的两种结果类型相同,例如a > 31 ? a : (unsigned char)'.'.

你不能像这样投射到char上,而不是使用cout <<(a> 31 ? a : '.'(;你可以只打印cout <<(char((a> 31 ? a : '.'(;

最新更新