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;	
	}
posted @ 2021-07-27 09:44  STEllIAF0X  阅读(125)  评论(0编辑  收藏  举报