C++标准模板库(STL)之 string

在C语言中,一般使用字符数组char str[]来存放字符串,但是使用字符数组有时会显得麻烦,C++在STL中加入了string类型,对字符串常用的需求功能进行了封装,使得操作起来更方便,且不易出错。

如果需要使用string ,需要添加string头文件,即#include<string>  (注:string.h和string是不一样得头文件)

一、string定义

  string str

  赋值:

  string  str=“abcd”

二、string中内容的访问

(1)通过下标访问

#include<cstdio>
#include<cstdlib>
#include<string>
using namespace std;
int main(){
    string str="abcd";
    for(int i=0;i<str.length();i++){
        printf("%c",str[i]);
    }
    printf("\n");
    return 0;
}

(2)通过迭代器访问

  当使用insert()和erase()时,需要用迭代器为参数

  定义:

string::iterator it;

  访问:

#include<cstdio>
#include<cstdlib>
#include<string>
using namespace std;
int main(){
    string str="abcde";
    string::iterator it;
    for(string::iterator it=str.begin();it!=str.end();it++){
        printf("%c",*it);
    }
    printf("\n");
    return 0;
}

  输出:
  abcde

三、string常用函数

(1)operator+=

  这是string的加法,可以将两个string直接拼接起来

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstdlib>

#include<string>
using namespace std;
int main(){
    string str1="abcde";
    string str2="xuy";
    string str3;
    str3=str1+str2;
    cout<<str3<<endl;
    printf("\n");
    return 0;
}

  输出:
  abcdexuy

(2)compare operator

  两个string类型可以直接使用==,!=,<,<=,>,>=比较大小,比较规则是字典序

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstdlib>

#include<string>
using namespace std;
int main(){
    string str1="abcde";
    string str2="xuy";
    if(str1<str2){
        printf("str1<str2\n");
    }
    else if(str1>str2){
        printf("str1>str2\n");
    }
    else{
        printf("str1=str2\n");
    }
//    printf("\n");
    return 0;
}

  输出:
  str1<str2

(3)length() / size()

  返回string的长度

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cstdlib>

#include<string>
using namespace std;
int main(){
    string str1="abcde";
//    string str2="xuy";
    printf("%d",str1.length());
    printf("\n");
    return 0;
}

  输出:
  5

(4)insert()

  1.  insert(pos,string) 在pos位置插入string字符串

  2.  insert(it,t2,t3)  it为原字符串的欲插入位置,it2和it3为待插入字符串的首位迭代器,用来表示串[it2,it3)将被插入在it的位置上

(5)erase()

  1.删除单个元素

    str.erase(it)用于删除单个元素,it为需要删除的元素的迭代器

  2.删除一个区间内的所有元素

    str.erase(first,last)  其中first和last分别为需要删除区间的起始迭代器和末尾迭代器的下一个地址,也即删除[first,last)

  (6)clear()

  clear()用以清空string中的数据

(7)substr()

  substr(pos,len)返回从pos号位开始,长度为len的子串

(8)string::npos

  是一个常数,值为-1

(9)find()

  str.find(str2),当str2是str子串时,返回其在str中第一次出现的位置,如果str2不是str的子串,那么返回string:npos

  str.find(str2,pos) , 从str的pos号位开始匹配str2,返回值与上相同

(10)replace()

  str.replace(pos,len,str2) 把str从pos号位开始,长度位len的子串替换为str2

  str.replace(it1,it2,it3) 把str的迭代器[it1,it2)范围的子串替换为str2

posted @ 2021-01-25 11:44  XA科研  阅读(175)  评论(0编辑  收藏  举报