2017-06-27 45 views
-1

我最近一直在评论我的C++。但我遇到了一个关于打印字符数组的难题。代码如下:如何打印字符数组及其中的某个字符?

int n = 5; 
char *array1 = new char[n]; 
for (unsigned int i = 0; i < n - 1; i++) 
    array1[i] = (char)i; 
cout << array1 << endl; 
cout << array1[3] << endl; 
cout << *array1 << endl; 

三个COUT行不工作。有谁能告诉我为什么?

+1

什么不起作用?它是否编译?如果是这样,它运行吗?如果是这样,输出是什么? –

+0

'int'值'1'(例如)与字符“1”不同。 [这个ASCII(最常见的字符编码)表](http://en.cppreference.com/w/cpp/language/ascii)应该有助于你理解。在你面前的桌子上,想想如果你做了什么, '1 +'0''。 –

+0

您正在打印一些无法打印的字符。 – WhiZTiM

回答

1

array1[0] == 0cout << array1array1解释为指向NUL终止字符串的指针,并且由于第一个字符实际上是NUL,因此字符串为空。

cout << array1[3]确实打印出一个带有ASCII码3的字符。它是一个不可打印的字符,肉眼不可见。不知道你期望在那里看到什么输出。

0

作为一个单独的答案,看来你正在试图获得它具有以下的字符串:数组= “1234 ......(N-1)”

尝试:

for (int i = 0; i<(n-1); i++) 
    array1[i] = (char)i - '0'; 
+0

应该是'+'我想? –

+0

如果它的' - ',它就是这样:'(ASCII的n值) - (ASCII值为0)= n'。 所以如果它的数字为0,它就成为'(ascii of 0) - (ascii of 0)= 0'本身。 请投票incase我帮助^ _^ –

+1

我不这么认为。因为(char)我的意思是“带有ascii代码的字符”,而不是“ascii code of character'i'”。所以它应该是'+'。 –