2013-06-05 170 views
1

我面臨這個位置,我需要創建一個用戶輸入大小的動態字符串(所以我嘗試使用動態cstring)。創建一個動態Cstring

char * S; 
int x; 

cin >> x; 

S = new char[x]; 

for (int i = 0; i < x; i++) { 
    S[i]=' ';  //trying to make it a string of spaces so I can fill it in later 
} 

在這樣做的,輸出字符串(cout << S;)我得到X空間和一些隨機字符我該如何解決這個問題?

+5

嘗試在字符串的末尾添加「\ 0」。 – austin

+1

爲什麼不使用std :: string? CString也是由微軟製作的一個類,char *就是你在那裏的東西。 – olevegard

+1

@olevegard我認爲他的意思是說'C字符串'。 – SevenBits

回答

1

擴展我以前的評論。我認爲您需要在最後添加一個空字符,以便std::cout知道何時停止,否則它將繼續嘗試打印S指向的內存內容。

char * S; 
int x; 
cin >> x; 
S = new char [x + 1]; // +1 for the null character 

int i; 
for (i=0; i<(x); i++) 
    S[i] = ' '; 

S[i] = '\0'; 
+0

謝謝@austin:D我忘了null – Ezz