2017-06-27 83 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'」。所以它應該是'+'。 –