2016-02-13 87 views
0

我是新與C++和我心中已經編寫這個程序:錯誤時打印字符數組,而不指數CPP

#include <iostream> 
#include <string> 

using namespace std; 

void main() { 
    char s[2] = { 'a', 'l' }; 
    cout << s << endl; 
} 

當我運行此代碼,我得到這樣的錯誤輸出:

al╠╠╠╠╠╠H²O 

爲什麼?因爲當我學習C++時,當我打印字符數組時,我會看到數組元素,比如字符串。

+0

's'不是零終止。當傳遞給'cout'時,它會衰變成一個'char *',一個C風格的字符串。它需要零終止,因爲沒有附加長度信息。 – IInspectable

回答

1

你的char數組不是零終止,std :: cout不知道你的字符串結尾在哪裏。

你需要這樣做:

char s[3] = { 'a', 'l', '\0'};