学习笔记之string类

#include<string>

/*string 生成*/
string str("123"); //"123"
string str(3,"1"); //"111"
string str = "123"; //"123"

/*string 头尾*/
str.front(); //第一个元素 
str.back(); //最后一个元素 

/*string 迭代器*/
string::iterator iter //一个string的迭代器
str.begin() //指向str第一个元素位置的迭代器 
str.end() //指向str最后一个元素后一个位置的迭代器 

/*string 插入*/
str.push_back('a'); //在尾部插入一个字符
str.insert(s1.begin(), 'a'); //在指定位置前面插入一个字符

/*string 删除*/
str.pop_back(); //删除最后一个元素 
str.erase(str.begin()); //删除迭代器指向元素
str.erase(str.begin()+1, str.end()-2); //删除指定区间的元素
str.erase(1, 6); //删除从索引(1)开始的n(6)个字符

/*string 替换*/
str.replace(str.begin(), str.begin + 5, "boy"); //替换迭代器指定的区间
str.replace(6, 5, "girl"); //替换索引指定的区间,从下标6开始的五个元素 

/*string 拼接*/
str1.append(str2); //str1str2
str1 = str1 + str2; //str1str2

/*string 容量*/
str.size()
str.length()

/*string 遍历*/
for(int i = 0; i < str.size(); i ++ ) //索引遍历 
for(string::iterator iter = str.begin(); iter != str.end(); iter ++ ) //迭代器遍历 
for(auto &x : str) //迭代器另一种便捷方法 

/*string 排序*/
sort(str.begin(), str.end());

/*string 比较*/
str1 < str2 //字典序比较,<、<=、==、>、>=都可以用
str1.compare(str2) //相等为0,str1>str2为1,反之-1

/*sting 查找*/
str.find("123") //从前往后找,若找到,返回首字母下标;反之,返回-1
str.rfind("123") //从后往前找
str.find_first_of("123") //查找第一个属于该字符串的字符返回下标
str.find_first_not_of("123")  //正向查找在原字符串中第一个与所有目标字符都不符的下标
str.find_last_of("123")    //从原字符串最后开始往前查找第一个满足任意目标字符的下标
str.find_last_not_of("123")    //反向查找在原字符串中第一个与所有目标字符都不符的下标

/*string 某元素个数*/
str.count('a'); //返回str里a字符的个数 

/*string 分割*/
str.substr(2, 5); //返回从索引2开始的五个元素组成的字符串 

/*string 判空*/
str.empty() //返回布尔值 

/*string 清空*/
str.clear();

实例1

#include<iostream>
#include<string>
using namespace std;

int main(){
	string str1="fabcde";
	cout<<str1.find_first_of("bc")<<endl;    //输出2
	cout<<str1.find_first_not_of("bc")<<endl;    //输出0
	cout<<str1.find_last_of("fa")<<endl;        //输出1
	cout<<str1.find_last_not_of("be")<<endl;     //输出4
	return 0;
}
 

实例2

#include<iostream>
#include<string>
using namespace std;

int main(){
	string str1="fabcde";
	string str2="helo";
	str1.insert(str1.begin()+3,'3');
	str2.insert(str2.end()-1,'l');
	cout<<str2<<endl;    //hello
	cout<<str1<<endl;    //fab3cde
	cout<<str2.append(str1)<<endl;    //hellofab3cde
	return 0;
}
 

实例3

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main(){
	string str="hello world!";
	string::iterator iter;
	for(iter=str.begin();iter!=str.end();iter++){
		cout<<*iter;        //hello world!
	}
	cout<<"\n";
	sort(str.begin(),str.end());
	for(auto &x:str){
		cout<<x;        // !dehllloorw
	}
	cout<<"\n";
	str.replace(6,5,"girl");
	for(auto &x:str){
		cout<<x;        // !dehlgirlw
	}
	cout<<"\n";
	cout<<str.substr(6,4);    //girl
	return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值