为什么字符串不能在c ++中打印所需的输出?

kri*_*ant 1 c++

我正在用c ++编写这段代码.

std::string s;
s[0] = 'a';
std::cout << s;
Run Code Online (Sandbox Code Playgroud)

结果应该是:a

为什么这不打印什么?问题是微不足道的,但任何人都可以用更好的方式解释.

438*_*427 7

您的字符串大小从一开始就为零,因此您不能访问索引零.相反

s = "a";
Run Code Online (Sandbox Code Playgroud)

现在字符串的大小为1,允许访问s [0]

通常,您可以从零到大小为1但仅在大小> = 1时进行索引