STL之string

c++STL之string


1.介绍

string是一个字符串类,可以理解成和int一样定义;

初始化和头文件

#include<string>
//当然也可以用万能头文件
#include<bits/stdc++.h>
//定义方式
string str;
//可以初始化
string str("ljj");
//多条初始化
string str(3,'27');
//第一个参数是个数,第二个参数是值,打印出来是272727

特性

string不同于char定义的字符,它是支持比较运算符的(按照字典序),还支持 + 运算符

string str1="ljj";
string str2="love";
string str3="xiaobaobao";
string s=str1+" "+str2+" "+str3;
cout<<s;
//输出ljj love xiaobaobao

bool judge=false;
string s1="abc";
string s2="abd";
if(s1<s2) judge=true;
(judge==true)?cout<<1:cout<<0;
//1

读入

//读入字符遇到空格和回车结束
string s1;
cin>>s1;
//读入包含空格的字符串,遇到回车结束
string s2;
getline(cin,s2);
//上面这种读入方法会获取前一个空格
//解决方案如下
int n;
cin>>n;
string s;
getchar();//cin.get()
getline(cin,s);

2.函数

代码含义
s.size/s.length()获取字符串长度
s.push_back(“ljj”)尾插入
erase(pos,len)删除从pos开始的len个字符
tolower(s[i])/toupper(s[i])大小写转化
s.substr(pos,n)从pos开始截取n个字符
s.find(str,pos)返回找到位置的索引,找不到返回-1
sort(s.begin(),s.end())按照字典序排序
reverse(s.begin(),s.end())翻转字符串

3.解题

以上一篇中序后序还原二叉树为例:

void printPre(string s1,string s2){
	if(s1=="\0"||s2=="\0"){
		return;
	}
	int size=s2.size()-1; 
	//根节点 
	int pos=s1.find(s2[size]);
	cout<<s1[pos];
	//左子树 
	printPre(s1.substr(0,pos),s2.substr(0,pos));
	//右子树
	printPre(s1.substr(pos+1),s2.substr(pos,size-pos)); 
}
//先序:abeidj
//中序:ebiadj
//后序:eibjda 

欢迎批评指正!

  • 42
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值