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

时间:2016-09-24 09:03:38

标签: c++

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

std::string s;
s[0] = 'a';
std::cout << s;

结果应该是:a

为什么这不打印?问题很简单,但任何人都可以用更好的方式解释。

2 个答案:

答案 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;