我尝试了以下代码但它没有用。
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;
如何克服第一个代码中出现的问题?我应该使用字符矢量吗?
答案 0 :(得分:5)
你追加字符。字符串不是神奇地为你分配内存的东西,所以如果你不正确地索引它,那就是未定义的行为。
是的,字符串会记录它的长度,并且最后不依赖于nuls。
string a = "abc";
a += '1';