C++ 中字符串的内存分配

Memory allocation for String in C++

本文关键字:内存 分配 字符串 C++      更新时间:2023-10-16

我尝试了以下代码,但它不起作用。

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;

如何克服第一个代码中看到的问题? 我应该使用字符向量还是什么?

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

是的,

字符串会跟踪其长度,并且不依赖于末尾的 NULS。

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