-2
C++ Primer告诉我s[s.size()]
应该是不可预知的。为什么s [0]是C++中空字符串s的空字符串?
但我尝试了很多次,并将其插入到其他代码中,s[0]
始终是一个空字符串。但是,s
不是空字符串时,尝试访问s[size()]
将引发错误。
为什么空字符串是特殊的?
C++ Primer告诉我s[s.size()]
应该是不可预知的。为什么s [0]是C++中空字符串s的空字符串?
但我尝试了很多次,并将其插入到其他代码中,s[0]
始终是一个空字符串。但是,s
不是空字符串时,尝试访问s[size()]
将引发错误。
为什么空字符串是特殊的?
成员对字符串的访问会产生字符,而不是字符串。
C++ 11个保证s[s.size()]
是0 C++ 17甚至允许你写入到s[s.size()]
,只要你正在写的值0:
[关于
operator[](size_type pos)
:]需要:
pos <= size()
。返回:
*(begin() + pos)
ifpos < size()
。否则,返回对charT
对象的引用,其值为charT()
,其中将对象修改为除charT()
以外的任何值都会导致未定义的行为。
(charT()
是standardese为 “零”。)
此前C++ 17的最后一句不包含词语 “比charT()
之外的任何值”。这是过分限制的,例如,禁止将strcpy
转换成正确大小的字符串。
究竟是什么? – BlueWanderer
请尝试更清楚地表达您的问题。 *“s [0]总是一个空字符串”*甚至没有意义,因为s [0]是一个char字符串,所以它永远不会是任何类型的字符串,也不会是空的。 –
对不起,我的表达不清楚,因为英语不是我的母语,英语学习在我的国家并不普遍。 – RevolverOcelot