为什么S [0]是C 中一个空字符串S的空字符串
Why is s[0] is an empty string for an empty string s in C++?
C 底漆告诉我s[s.size()]
应该是不可预测的。
但是我尝试了很多次,然后将其插入其他代码,s[0]
始终是一个空字符串。但是,当s
不是一个空字符串时,尝试访问s[size()]
会丢弃错误。
为什么空字符串特别?
字符串上的成员访问会产生a 字符,而不是字符串。
c 11保证s[s.size()]
为0。C 17甚至允许您 with s[s.size()]
,前提是您正在编写值0:
[关于
operator[](size_type pos)
:]需要:
pos <= size()
。返回:
*(begin() + pos)
如果pos < size()
。否则,返回对类型对象的引用charT
带有值charT()
,其中将对象修改为charT()
以外的任何值都导致不确定的行为。
(charT()
是"零"的标准配置。)
在C 17之前,最后一句话中没有包含"除了charT()
"之外的任何值。这是过于限制的,例如禁止strcpy
进入正确尺寸的字符串。