为什么S [0]是C 中一个空字符串S的空字符串

Why is s[0] is an empty string for an empty string s in C++?

本文关键字:字符串 一个 为什么      更新时间:2023-10-16

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进入正确尺寸的字符串。

相关文章: