【算法笔记】STL容器(string)

本文详细介绍了C++中字符串的基本操作,包括定义、初始化、输入输出、访问、常用函数如`operator+=`、`compare`、`length()`、`insert`、`erase`、`clear`、`substr`、`find`、`replace`、`to_string()`等,以及如何在实际编程中应用这些函数来高效处理字符串。
#include <string>
using namespace std;

 1.定义

//定义,初始化
string str;
string str="abc";

//若要输入输出整个字符串,只能cin\cout
string str;
cin>>str;
cout<<str;

//或者将字符串转换为字符数组
printf("%s\n",str.c_str());

2.访问

//1:通过下标访问
string str="abc";

for(int i=0;i<str.length();i++){
    printf("%c",str[i]);
  }

//2:通过迭代器访问
string str="abcd";

for(string::iterator it=str.begin();it!=str.end();it++){
    printf("%c",*it);
  }

//string和vector一样,支持直接对迭代器进行加减某个数字
printf("%c",*(str.begin()+3));

3.函数

<1> operator+=

string str1="abc",str2="xyz";
  
  string str3=str1+str2;
  str1+=str2;

cout<<str1<<endl;
cout<<str3<<endl;

<2>compare operator

使用==,!=,<,<=,>,>=比较大小(字典序)

<3>length()/size()

string str="abcxyz";

printf("%d %d",str.length(),str.size());

<4>insert()

string str1="abcxyz",str2="opq";
  
str1.insert(3,str2);//在3位置插入str2

str1.insert(str1.begin()+3,str2.begin(),str2.end());
//从str1的3号位置开始插入,
//被插入字符串的头尾迭代器str2.begin(),插入字符串的结束str2.end()

<5>erase()

string str="abcxyz";
//1:删除单个位置  
str.erase(str.begin()+4);//删除4号位置的元素

//2:删除区间
str.erase(str.begin()+2,str.end()-1);//[begin,end)

str.erase(3,2);//(pos,length)

<6>clear()

str.clear();

<7>substr()

string str="abcxyz";

str.substr(0,5);//(pos,length)

<8>string::nops

其本身的值为-1,但由于是unsigned_int类型,因此也可以认为是unsigned_int类型的最大值

(-1或者4294967295)

可以作为find函数失配时的返回值

<9>find()

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

if(str.find(str2)!=string::npos){//返回str2在str中第一次出现的位置
  cout<<str.find(str2)<<endl;
}

if(str.find(str2,7)!=string::npos){//返回str2从str的7号位置开始,第一次出现的位置
  cout<<str.find(str2,7)<<endl;
}

<10>replace()

cout<<str.replace(10,4,str2)<<endl;// (pos,len,str2)
cout<<str.replace(str.begin(),str.begin()+5,str3);// ([it1,it2),str3)

<11>to_string() 

string pi = "pi is " + to_string(3.1415926);

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值