string容器的数据的访问

shienh 2020年02月05日 371次浏览

string容器可以通过[]或者at()访问string的字符。
at 和[]区别 []访问越界,程序直接挂掉。at()抛出out_of_range()异常

#include <iostream>
#include <string>
#include <stdexcept>
using namespace std;

int main(int argc, char *argv[])
{
    string s="hello world";
    for(int i = 0; i < s.size();i++){
        cout<<s[i]<<endl;
    }
    cout<<endl;

    for(int i = 0; i < s.size();i++){
        cout<<s.at(i)<<endl;
    }

    try{
       // s[100];
        s.at(100);
    }
    catch(out_of_range & e){
        cout<<e.what();
    }

    return 0;
}

运行结果如下:
image.png
如果把try中的源码改为s[100]进行越界访问,运行结果如下:
image.png