2016-01-15 63 views
-2

我試過下面的代碼,但它沒有工作。在C++中爲字符串分配內存

string tempStr; 
tempStr[0] = 'a'; 
tempStr[1] = 'b'; 
tempStr[2] = 'c'; 
cout << "TempStr: " << tempStr << endl; 

輸出給出了一個空字符串。那是因爲,C++沒有辦法知道我的字符串在哪裏結束。所以它將我的字符串視爲在聲明中找到的0長度。

如果我嘗試以下操作,我會得到「abc」作爲輸出。

string tempStr = "xyz"; 
tempStr[0] = 'a'; 
tempStr[1] = 'b'; 
tempStr[2] = 'c'; 
cout << "TempStr: " << tempStr << endl; 

如何才能克服在第一個代碼中看到的問題?我應該使用角色或任何東西的矢量?

回答

5

追加的字符。字符串不是神奇地可以爲你分配內存的東西,所以如果你不適當地索引它,那是未定義的行爲。

是的,字符串跟蹤它的長度,並且不依賴於最後的nuls。

string a = "abc"; 
a += '1';