如何打印char数组的元素?
问题描述:
我必须将十进制值转换为显示二进制值的字符串,例如给定8,我需要打印一个字符串“1000”。我有从十进制转换为二进制,但是当我直接从char数组中打印值时,我得到的问号而不是数字。我知道它与char数组读取值的方式有关,但我无法弄清楚如何纠正这个问题。如何打印char数组的元素?
void dec2Bin(int value, char binaryString[]) {
int remainder = 0;
int binDigit = 0;
int i = 0;
while (value != 0) {
binDigit = value % 2;
value /= 2;
binaryString[i] = char(binDigit);
i++;
}
for (int k = i - 1; k > 0; k--) {
cout << binaryString[k];
}
}
int main()
{
cout << "Enter a decimal number: ";
int num;
cin >> num;
char binaryString[20] = "";
dec2Bin(num, binaryString);
return 0;
}
答
当你
binaryString[i] = char(binDigit);
要指定十进制值0
或1
到binaryString[i]
。没关系,char
基本上只不过是一个小整数。
的问题来当您想要打印的价值,作为唯一的重载<<
运营商来处理char
对待人物为一个字符,并且在大多数编码值0
和1
是不可打印的。
解决办法有两个:
-
要么你转换要打印到不被视为一个字符一个更大的整数字符:
cout << static_cast<int>(binaryString[k]);
-
或者你做阵列包含实际的可打印字符:
binaryString[i] = binDigit + '0';
非常感谢你的亲切陌生人。我一直试图了解这个问题几个小时。我用binDigit + 0,它完美地工作。 – so8857