这是一个发出""的代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string k= "";
k[0] = 'k';
cout << k;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你k
有0个元素.你正在访问它的第一个元素.分配给它会产生未定义的行为.
您可以通过使用不同的大小初始化来更改它,即:
string k = " ";
k[0] = 'k'; // ok
Run Code Online (Sandbox Code Playgroud)
要么
string k(1, 0);
k[0] = 'k'; // ok
Run Code Online (Sandbox Code Playgroud)
或者你可以追加角色:
k.push_back('k');
Run Code Online (Sandbox Code Playgroud)
还有at()
执行边界检查的方法.如果你使用无效索引(即k.at(0) = 'k'
在你的例子中)调用它,它就会抛出std::out_of_range
.