| 张竞的博客 | C++ | 考研 | 考研经验帖 | 晴神笔记 |

C++ STL——string

C++ string

历史问题

  • C:用字符数组来解决字符串问题,经常操作失误
  • C++:针对字符串,优化操作——对常见操作以函数的形式进行了封装

string定义

可以理解string是字符串的变量类型
string str;
string str="abcd";//用双引号里面字符串的形式直接初始化

string中内容访问

  • 1、像字符数组一样通过下标访问
  • 2、读入读出:cin&cout
  • 3、用c_str()string类型转换成字符数组用printf输出
  • 4、通过迭代器访问

string常用函数

  • operator+-
  • compare operator
  • length()&size()
  • insert()
  • erase()
  • clear()
  • substr
  • string::npos
  • find()
  • replace
//代码1:通过下标访问
#include<stdio.h>
#include<string>
using namespace std;
int main(){
    string str="abcd";
    for(int i=0;i<str.size()/*str.size()同理*/;i++){
        printf("%c ",str[i]);
    }
    return 0;
}

//代码2:读入读出字符串
#include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    cin>>str;
    cout<<str<<endl;
    return 0;
}

//代码3:用printf输出string
#include<stdio.h>
#include<string>
using namespace std;
int main(){
    string str="abcd";
    printf("%s\n",str.c_str());//将string型str使用c_str()变成字符数组一并输出
    return 0;
}

//代码4:通过迭代器访问
#include<stdio.h>
#include<string>
using namespace std;
int main(){
    string str="abcd";
    //string::iterator it;
    for(string::iterator it=str.begin();it!=str.end();it++){
        printf("%c",*it);
    }
    return 0;
}

//代码5:string常用函数——operator+=
#include<iostream>
#include<string>
using namespace std;
int main(){
    string str1="abc",str2="xyz",str3;
    str3=str1+str2;
    str1+=str2;
    cout<<str1<<endl;
    cout<<str3<<endl;
    return 0;
}

//代码6:string常用函数compare operator
#include<iostream>
#include<string>
using namespace std;
int main(){
    string str1="aa",str2="aaa",str3="abc",str4="xyz";
    if(str1<str2)printf("OK1\n");
    if(str1!=str3)printf("OK2\n");
    if(str4>=str3)printf("OK3\n");
    return 0;
}

//代码7:string常用函数length()&size()
#include<string>
#include<iostream>
using namespace std;
int main(){
    string s="abcxyz";
    cout<<s.length()<<" "<<s.size()<<endl;//有多少个字符就输出多少,这一点不同于C语言的字符串
    return 0;
}

//代码8:string常用函数insert()————str1.insert(position,str2);--->在str1的下标为position位置上后插入str2,其余部分尾随
#include<iostream>
#include<string>
using namespace std;
int main(){
    string str="abcxyz",str2="opq";
    str.insert(3,str2);//在str的下标为3的位置上处插入str2
    cout<<str<<endl;
    return 0;
}

//代码9:insert()————截取一段字符串然后插入
/**********笔记**********/
/*
insert(it,it2,it3)--->it是str1的迭代器,it2,it3是str2的迭代器;
该函数的作用就是将str2的 [it2,it3)截取然后插入到str1的it位置上
*/
/**********笔记**********/
#include<iostream>
#include<string>
using namespace std;
int main(){
    string str1="abcxyz",str2="opq";
    str1.insert(str1.begin()+3,str2.begin(),str2.end());//将str2的一整个全部插入到str1的3号下标
    cout<<str1<<endl;
    return 0;
}
posted @ 2021-02-28 20:05  张_竞  阅读(79)  评论(0)    收藏  举报