【C++】string s = "abcde"として、s[5]を読んでいいの!?いいんです

for(int i = 0; i < s.length(); i++) {
    if(s[i] == 'c' && s[i+1] == 'h');
...
  • というコードを見かけた
  • 配列でやったら範囲エラー
  • 文字列は終端 '\0' なのでOK
  • 読むだけならね。書き換えはダメ

stackoverflow.com

s[-1]も読んでいいんです!

beta.atcoder.jp

  • 配列だとアクセスできるのは 0〜A.size()-1 だけど、文字列なら左右に1つずつ広く読む分にはOKなのね

学び

  • s = "abcde" として、
  • s[-1], s[5] は読む分にはOK