C ++中String的内存分配

时间:2016-01-15 04:49:19

标签: c++ string

我尝试了以下代码但它没有用。

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

输出为空字符串。是因为,C ++无法知道我的字符串结束的位置。所以它认为我的字符串是在声明中找到的0长度。

如果我尝试以下操作,我会得到&#34; abc&#34;作为输出。

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

如何克服第一个代码中出现的问题?我应该使用字符矢量吗?

1 个答案:

答案 0 :(得分:5)

追加字符。字符串不是神奇地为你分配内存的东西,所以如果你不正确地索引它,那就是未定义的行为。

是的,字符串会记录它的长度,并且最后不依赖于nuls。

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