[英]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.