2016-01-15 36 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';