c++ STL (3)string容器

string 的定义
string类的定义
定义string类的方式跟基本数据类型相同,只需要在string后跟上变量名即可

string str;
如果要初始化,可以直接给string类进行赋值
string str="hello";

string类的访问
直接通过下标访问

 string str="abcdef";
  for(int i=0;i<str.length();i++){
    
    
  	 cout<<str[i];
  }	

如果要读入和输出字符串只能用cin和cout

 cin>>str;
 cout<<str;

如果读入带有空格等等的字符串

getline(cin,str);

如果要用printf输出string类型

printf("%s",str.c_str());

通过迭代器访问

for(string::iterator it=str.begin();it!=str.end();it++){
    
    
		   cout<<*it;
	}

string和vector 一样,支持直接对迭代器进行加减某个字数str.begin()+i

string类可以直接进行加法,可以将两个string类拼接起来
string类可以直接比较大小 是按字典序排的

length() size() 返回string的长度

string str="abcdef";
cout<<str.length()<<endl;//6
cout<<str.size()<<endl;//6

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

   string str1="abc";
	string str2="ddd";
	str1.insert(1,str2);
	cout<<str1<<endl;//adddbc

insert(it,it2,it3) it为原字符串欲插入的位置 it2和it3为待插字符串的首位

//insert(it,it2,it3) it为原字符串欲插入的位置 it2和it3为待插字符串的首位迭代器
	string str3="abcde";
	string str4="fghi";
	str3.insert(str3.begin()+3,str4.begin(),str4.begin()+2); 
	cout<<str3<<endl;//abcfgde

erase()
erase() 有两种用法一种是删除单个元素另一种是删除一个区间的所有元素

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

	
//	删除单个元素  erase(it) 用于删除单个元素 it为要删除的元素的迭代器 
    string s1="abcdef";
	s1.erase(s1.begin()+3);
	cout<<s1<<endl;//abcef
	

删除一个区间内的所有元素
str.erase(first,last) first为要删除区间的其实迭代器,last为需要删除的末尾迭代器的下一个地址
str.erase(pos,length) pos为要删除的起始地址 length为要删除的字符个数

//删除一个区间内的所有元素 
	//str.erase(first,last) first为要删除区间的其实迭代器,last为需要删除的末尾迭代器的下一个地址 
	 string s2="abcdef";
	 s2.erase(s2.begin(),s2.begin()+4);
	 cout<<s2<<endl;//ef 
	 
	//str.erase(pos,length) pos为要删除的起始地址 length为要删除的字符个数 
	string s3="abcdef";
	s3.erase(2,4);
	cout<<s3<<endl;//ab 

clear()清空string中的数据

s3.clear();
cout<<s3<<endl;

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

//	substr(pos,len)返回从pos号位开始,长度为len的子串 
	string s4="abcdef";
	string s5=s4.substr(3,3);
	 cout<<s5<<endl;//def

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

str.find(str2,pos)从str的pos号位开始匹配str2


	 //str.find(str2) 当str2是str的子串时,返回其在str中第一次出现的位置,如果str2不是str的子串返回-1 
	  string ss1="abcdefabc";
	  string ss2="abc";
	  int pos=ss1.find(ss2);
	  cout<<pos<<endl;//0
	  
	 //str.find(str2,pos)从str的pos号位开始匹配str2
	  int pos1=ss1.find(ss2,3); 
	  cout<<pos1<<endl;//6
	  int pos2=ss1.find("xyz");
	  cout<<pos2<<endl;//-1

replace()

str.replace(pos,len,str2) 把str从pos号位开始,长度为len的子串替换为str2
str.replace(it1,it2,str2) 把str的迭代器it1,it2范围的子串替换为str2

猜你喜欢

转载自blog.csdn.net/qq_44866153/article/details/108979673