【发布时间】:2020-09-18 08:42:43
【问题描述】:
目前正在学习字符串,我有以下:
string s;
s[0]='a'; s[1]='b';
cout<<s;
string s; s.clear();
s+='a'; s+='b';
cout<<s;
我得到空字符串作为第一个示例的输出,第二个工作正常。我知道第一个是 undef 行为,我们第二次“推送”一个元素而不是分配一个值。 任何更多的澄清将不胜感激
【问题讨论】:
-
@UnholySheep 对于一个刚接触 cpp 的人来说可能有点吓人。你想要的是构造一个字符串,点击
method functions: (constructor)部分的链接,并检查示例。 -
@M.A 他们要求提供文档,而 cppreference 是提供上述文档的最可靠的网站。显然,一本好书是初学者的正确选择
-
string s;声明不为任何字符保留空间,通过operator[]访问此空字符串是未定义的行为,您需要先为s.resize(3);之类的字符创建空间。这是一些不那么令人生畏的文档cplusplus.com/reference/string/string -
@anastaciu 我不能说 cplusplus 不那么令人生畏.. 它 90-ness 的网页设计让我毛骨悚然 c_c