[英]While iterating through a string, why am I NOT getting out of range error, even though I'm already beyond its length?
我的代码从字面上是这样的:
int main(){
string s = "Success!\n";
for (int i=0; i<10; ++i) cout<<s[i];
return 0;
}
字符串s的长度为8; 即使我使用的迭代器'i'超出了字符串的长度,也没有出现任何错误。 为什么? 输出为:
Success!
有了换行符,我什至没有放换行符
字符串s的长度为8
不,不是9。
即使我使用的迭代器“ i”超出了字符串的长度,也没有出现任何错误
您不会超出字符串的长度,而是等于字符串的长度。 定义为返回空字符。 即使使用operator[]
超出了字符串的长度,这也是未定义的行为 ,不希望引发异常。
我什至没有放换行符
... 是的,你做到了。
代替cout << s[i]
使用cout << s.at(i)
,您将获得所需的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.