如何打印 char 数组的元素?

How do I print the elements of a char array?

我必须将十进制值转换为显示二进制值的字符串,例如给定 8,我需要打印一个字符串“1000”。我有从十进制到二进制的转换,但是当我直接从 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);

您正在将小数值 01 分配给 binaryString[i]。没关系,一个char基本上就是一个小整数。

当您想要打印值时,问题就来了,因为处理 char 的唯一重载 << 运算符将字符 视为 字符,在大多数编码中,值 01 不可打印。

有两种解决方法:

  1. 要么将要打印的字符转换为更大的整数,这样就不会被视为字符:

    cout << static_cast<int>(binaryString[k]);
    
  2. 或者让数组包含实际的可打印字符:

    binaryString[i] = binDigit + '0';