string

STL-String

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

1.cin 和 cout

  1. 字符串可以通过 cin 输入,当遇到空格时就停止输入。

  2. 可以通过 cout 直接输出一个字符串。

拓展:当需要读入带空格的字符串时可以用如下两种方式。


    //1.使用 getline()
    string line;
    getline(cin,line);//将控制台一行的内容全部读取到 line 中,遇到回车结束

    //2.使用 gets()
    char c[50];
    gets(c);//读取一行数据
    cout<<c<<endl;

2.operator+=

  string 中可以直接将两个字符串拼接起来


    string a = "aaa";
    string b = "bbb";
    string c = a + b;
    //c:aaabbb

3.compare operator

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

4.length()/size()

  length() 返回 string 的长度,即存放的字符,时间复杂度为 O(1)。size() 用法与 length() 基本相同。

5.insert()

  1. insert(int index,string):在 index 位置插入字符串 string。

    string str = "abcxyz",str2 = "opq";
    str.insert(3,str2);//往 str[3] 处插入opq
    cout<<str<<endl;   //abcopqxyz
  1. insert(it,it2,it3):it 为原字符的欲插入的位置,it2 和 it3 为待插入字符的首尾迭代器,用来表示串 [it2,it3)将被插入在 it 的位置。

    string str = "abcxyz",str2 = "opq";
    //在 str 的三号位(即 c 和 x 之间)插入str2
    str.insert(str.begin() + 3,str2.begin(),str2.end());
    cout<<str<<endl;   //abcopqxyz

6.erase()

  1. erase(it):删除单个元素,it 为要删除的元素的迭代器
  2. erase(first,last):删除一个区间的所有元素,first 为要删除区间的起始迭代器,last 为要删除区间的末尾迭代器的下一个地址
  3. erase(index,length):从 index 位置开始,删除长度为 length 的字符串。

7.substr()

  substr(index,length):返回从 index 开始,长度为 length 的子串。

8.string::npos

  string::npos 是一个常数,其本身的值为 -1,但由于是 unsigned_int 类型,因此可以认为是 unsigned_int 类型的最大值。string::npos 用以作为 find 函数失配时的返回值,可以认为 string::npos 等于 -1 或者 4294967295.

9.find()

  1. str.find(str2):当 str2 是 str 的子串时,返回其在 str 中第一次出现的位置;如果 str2 不是 str 的子串,那么返回 string::npos。
  2. str.find(str2,index):从 str 的 index 位置开始匹配 str2,返回值同上。


    string str = "Thank you for your smile";
    string str2 = "you";

    if(str.find(str2) != string::npos){
        cout<<str.find(str2)<<endl;
    }
    if(str.find(str2,7) != string::npos){
        cout<<str.find(str2,7)<<endl;
    }

10.replace()

  1. str.replace(index,len,str2):把 str 从 index 开始,长度为 len 的子串替换为 str2.
  2. str.replace(it1,it2,str2):把 str 的迭代器 [it1,it2)范围的子串替换为 str2.

    string str = "Maybe you will turn around.";
    string str2 = "will not";
    string str3 = "surely";

    //"Maybe you will not turn around."
    cout<<str.replace(10,4,str2)<<endl;

    //"surely you will turn around."
    cout<<str.replace(str.begin(),str.begin()+5,str3)<<endl;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值