1.初始化:
string s;//此时s是一个空串
string s("haha");//直接初始化
string s = "haha";//拷贝初始化,效果和直接相同,但字符过多时拷贝浪费时间
string s(10,'a');//s中有10个a
2.读写和输入:
输入和读写只能用 cin 和 cout
cin>>s;//输入s;
cout<<s;//输出s;
使用 scanf 和 printf 会报错,除非将其转化成字符数组
printf("%s,s.c_str());//必须在使用时转化,提前转化不管用,之后还是string型
cin遇到空白字符会结束读取,例如下面的例子
输入 school college student
最后 s == "school";
可以使用geiline输入一整行:
getline(cin,s);
s == "school college student";
3.相关操作:
1. append();//在字符串末尾添加字符串
s="haha";
s.append("xid");//s.append('a');会报错
s=="hahaxid";
2. push_back();//在末尾添加一个字符
s="haha";
s.push_back('a');//s.push_back("a");会报错
s=="hahaa";
3. insert();//在任意位置插入一个字符
s="haha";
s.insert(s.begin(),'x');//同样s.insert(s.begin(),"x");会报错
s=="xhaha";
4. erase();//删除字符或子串
s="haha";
s.erase(s.begin());
s=="aha";//删除s[0];
s.erase(s.begin(),s.begin()+2);//删除[0,2)区间的字符
s=="ha";//删除s[0],s[1]
5. clear();//清空字符串
s="haha";
s.clear();
s=="";
6. empty();//判断是否为空,非空为true,空为false
s="haha";
s.empty()==true;
s="";
s.empty()==false;
7. size();//返回字符串字符的数量
s="haha";
s.size()==4;
8. find();//在字符串中查找字符串或字符返回第一次找到他们的位置
s="haha";
int position = s.find('a',0);//从s[0],位置开始找,position==1
s.find('a',1)==1;
s.find('a')==1;
s.find('a',2)==3;
s.find('e',0)==-1;//找不到返回-1
s.find("haha",0)==0;
s.find("haha")==0;
s.find("haha",1)==-1;
s.find("ha",1)==2;
如果没有找到可以用s.find()!=-1 或s.find()!=string::npos 来判断,效果是一样的
9. length();//返回字符串长度和size用法一样
s="haha";
s.length()==4;
10. replace();//替换字符串
s="012345";
s.replace(s.begin(),s.begin()+2,"888");//替换区间[0,1)
s=="8882345";
11. substr();//返回某个子字符串
s="012345";
s.substr(0,2)=="01"//[0,2)全是左闭右开
3.访问:
1. 下标访问
s="haah"
for(int i=0;i<s.size();i++){
cout<<s[i];
}
2.迭代器访问
s="haha";
string :: iterator it;
for(it=s.begin();it!=s.end();it++){
cout<<*it;
}
3. for(range for)语句访问 c++11标准有些编译器无法使用只做了解
s="haha";
for (auto c: s){
cout<<c;
}
4.字符处理:
#include<cctype>
char c;
isalnum(c);//字母或数字时为真
isalpha(c);//字母时为真
isdigit(c);//数字时为真
islower(c);//小写字母时为真
isupper(c);//大写字母时为真
tolower(c);//将大写字母转换成小写字母
toupper(c);//将小写字母转换成大写字母
isxdigit(c);//是十六进制数字时为真
ispunct(c);//是标点符号时为真
5.字符串处理
s="aaaaa";
transform(s.begin(),s.end(),s.begin(),toupper);//全部转换成大写
s=="AAAAA";
transform(s.begin(),s.end(),s.begin(),tolower);//全部转换成小写
s+s=="aaaaaaaaaa";
>=,>,<=,< 利用字符在字典中的顺序进行比较