string容器知识点

string容器是一个类;

构造
string s; 空字符串
string s(s2); 拷贝构造
string s(s2, index); 从s2的index处拷贝构造, 注:下标从0开始;
string s = "abc"; 或 string s("abc");

eg:
    string s;
    string s1 = "123";
    s = s1; //s = "abc"
    s += "123"; //s = "abc123"
    s += s1;  //s = "abc123abc"

输入带空格的字符串用getline(cin, s);
cin >> s 遇空格停止;

s.size() 与 s.length()都表示s内元素个数
s.empty(); 判断是否为空,空为true

赋值
s.assign(s1); 将s1赋值给s
s.assign(s1, 2, 3); 从s1的2位置开始保留3个字符
s.assign("Hello", 4); 保留4个字符

查找
eg:
    string s = "0101";
    int pos = s.find("01"); pos=0(返回的是要查找的字符串的第一个字符的下标);
    pos = s.rfind("01");    pos=2(返回的是要查找的字符串的第一个字符的下标);
    find是从前往后找;
    rfind是从后往前找;
    如果没找到返回s.npos;

s.find("Hi", 2); 从下标2开始往后找;
s.find('A'); 单字符用'';
s.find(s1);  查找s1返回s1第一个字符的下标;

插入
eg:
    string s = "0101";
	s.insert(2, "abc"); 在2的位置插入"abc";
    此时s = "01abc01";  注:把原来2位置的元素往后移,然后插入;
eg2:
    string s = "01";
    s.insert(1, "STRING", 3); 在s的1位置处插入 " " 内的前三个字符;
    此时s = 0STR1; 
eg3:
    string s = "01";
    string s1 = "abcd";
    s.insert(0, s1, 2, 3); 在s的0处插入s1的[2,3]区间内容;
    此时s = "cd01";

删除
s.erase(pos); 删除pos处的元素;
eg2:
    string s = "012345";
    s.erase(0, 2); 删除从0开始的2个字符
    此时s = "2345"; 注:第一个参数是位置,第二个参数是个数;

替换
eg:
    string s = "01234";
    s.replace(0, 2, "abc"); s从0处开始之后的2个字符替换为abc;
    此时s = "abc234";

子串
eg:
    string s = "0123";
    string s1 = s.substr(1, 2); 从s的1处开始截取长度为2的子串赋给s1;
    此时s1 = "12";
    如果是 s1 = s.substr(1);一个参数的话就是从s的1处到末尾赋给s1;
    此时s1 = "123";

比较
s.compare(s1);
一般情况下:s1大于s返回-1,s1等于s返回0,小于返回1;

at函数
s.at(0)与s[0]都是代表这个元素;
区别:[]方式如果访问越界,程序错误;
      at方式访问越界抛异常out_of_range
eg:(一般用不到)
    try {
        cout << s.at(29); //越界
    }
    catch(...) {
        cout << "越界!" << endl;  
    }
    会输出"越界!";

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值