C++中的string
C++中的string
参考资料:http://www.cplusplus.com/reference/string/
头文件:
#include<string>
壹.定义:
1.定义空字符串:
string str;
该方法定义的字符串无论作为全局变量或局部变量均长度为0,内容为空
2.定义含内容的字符串:
string str = "123";//定义字符串str,自动分配长度为3,内容为"123"
string a = str;//同下
string b(str);//定义与str长度内容完全相同的的字符串
string c(10,'c');//定义长度为10,含有10个'c'的字符串
char r[]="abc";
string abc=r;//定义长度内容与字符数组中非空内容相同的字符串;
string d(str,1,2);//创建以str的第1位开始往后含两个字符为内容,作为初始值的字符串
查询字符
str[i]
贰.读入与输出:
1.cin & cout
cin>>str;//输入str,长度自动分配
cout<<str;
2.getchar()
for(int i=1;i<=n;i++){
char c=getchar();//getchar可以快速地读取单个字符
str+=c;//将字符c附加到str的末尾,str的长度自动+1
}
3.getline()
getline(cin,str);//读取一整行字符(包括空格),不会因读到空格而停止,在读取到换行时停止,长度自动分配
4.scanf与printf:
不能正常读取string
叁.长度操作:
1.字符串有效长度查询:
string str="123";
str.size();//返回一个整形,数值为字符串有效长单独
str.length();//两者效果完全相同
cout<<str.size()<<endl;
2.查看字符串消耗空间:(单位:字节)
str.capacity();
3.长度修改:
Ⅰ."+="操作:
string str="123";
char c='k';
string a;
a+=str;
a+=c;//将一个字符串或者字符连接到字符串a后面,长度自动增加
Ⅱ.函数操作:
string str="123";
string a="123";
str.insert(i,a);//在str的第i位插入字符串a,长度自动改变
str.erase(i,n);//从str的第i位开始删去n个字符,长度自动改变
str.substr(i,n);//返回str从i开始n字符组成的字符串
cout<<str;
str.clear();//清空str,清空内容,长度重置为0,但消耗的底层空间大小不改变
4.查询操作:
string str="123123123";
str.find('1');//查找str中第一个出现的"1",返回他的索引;(返回值类型为size_t,可转为int)
str.find("123");//同上,该函数既可查找字符也可以查找字符串
str.rfind("123");//从后往前查
//若查不到结果,则返回 string::npos string::npos强制转换为int后是一个大于该字符串长度的大数
int k=str.find('1');
cout<<k<<" "<<str[k]<<endl;
str.find('1',i);//从第i位开始向后查,返回查找到的第一个目标的索引
//查找该串中所有的'1'
int t=0;
while(1){
if(str.find('1',t)==string::npos)
break;
t=str.find('1',t);
cout<<t<<" "<<str[t]<<endl;
t+=1;
}
本文来自博客园,作者:STEllIAF0X,转载请注明原文链接:https://www.cnblogs.com/STEllIAF0X/p/15064300.html