我已经将问题归结为atoi()输出的类型转换问题。基本上,我将一个string.c_str()传递给atoi(),我可以像我期望的那样'cout'这个值(32)。但是,如果我做这样的类型转换:
string num = "32";
unsigned char x = (unsigned char)atoi(num.c_str());
cout << x << endl;
然后x最终没有任何值。它不仅仅是0或者其他东西,而是NULL。是什么给了什么?
答案 0 :(得分:3)
char
代表字符符号。当您通过流打印它时,您将看到ASCII字符。 32是ASCII码中space
符号的代码,这就是为什么你看不到任何东西。
答案 1 :(得分:1)
char
值表示一个字符,因此将其字符打印到流中会显示字符本身,而不是其数字代码。
如果您要打印的字符的数值由可打印的ASCII字母表示,例如对应于字母A
的值65,您将看到控制台/终端输出中显示的字母。在您的示例中,数字代码为32,对应于空格,它将保持不可见。数字代码0将导致您的终端打印二进制NUL字符的某些表示。