我正在用c ++编写这段代码。
std::string s;
s[0] = 'a';
std::cout << s;
结果应该是:a
为什么这不打印?问题很简单,但任何人都可以用更好的方式解释。
答案 0 :(得分:7)
您的字符串大小从一开始就为零,因此您不能访问索引零。而是做
s = "a";
现在字符串的大小为1,允许访问s [0]
通常,您可以从零索引到大小-1,但仅在大小&gt; = 1
时索引答案 1 :(得分:1)
std::string s; // s is default constructed (s.length() returns 0)
//s[0] = 'a'; // modifying elements that are out of bounds causes undefined behavior
s.resize(1);
s[0] = 'a'; // OK, s.length() is 1
std::cout << s << std::endl;