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
欢迎批评指正!
标签:string,STL,s2,s1,cin,pos,读入 From: https://blog.csdn.net/2301_78759802/article/details/137091656