符华生日快乐,谢谢你的陪伴
我会一直喜欢你,做一个守望者,以后的每一个生日都想为你献上我的祝福 符华我超喜欢你
string
本质:
-
string是C++风格字符串,string本质上是一个类
string和char*的区别
-
char*是一个指针
-
string是一个类,类内部封装了char*,管理这个字符串,是一个char *型容器
特点:
string类内部封装了很多成员方法 例如:查找find,拷贝copy, 删除delete,替换replace,插入insert
string管理char*所分配的内存,不用担心复制越界和取值 越界等,由类内部进行负责
功能总结:添改查删替
表格整理
操作 | 函数 string a="jiagezuishuai"; string b; | 步骤 |
---|---|---|
string赋值操作 | b.assign(插入内容,内容选取长度); | string a="dsada"; string b=a; string c; c.assign("dasda",5); |
string字符串拼接 | b.append(拼接内容,截取位置,截取长度); | string c+=a; string d;d.append("adasd");d.append(追加内容,截取位置,截取长度);//空格也算长度 |
string 查找 | b.find(查找内容); b.rfind(查找内容) 区别 rfind 从右往左查找,find从左往右查找 | int b=a.find("ac");//返回数据第一次出现的位置,注意从0开始算,有返回位置 无返回-1,int c=a.rfind("ac");区别 rfind 从右往左查找,find从左往右查找 |
string 替换 | b.replace(位置,数量,替换内容);//数量与内容量不等时位置起数量个字符替换为替换内容 | string b="adasdwada";b.replace(位置,数量,替换内容);//数量与内容量不等时位置起数量个字符替换为替换内容 |
string字符串的比较 | int c; string d; c=b.compare(d);当b>d c为1,当b=d c 为0, 当b<d c为-1; | if(a.compare(b)==0) { cout<<"a=b"<<endl; } if else(a.compare(b)>0) //成立返回1 { cout<<"a>b"<<endl; } else { cout<<"a<b"<<endl; } //中文无法比 |
string字符存取 | b.at(位置); | 1.通过[]访问单个字符 string a="adbsadad"; for(int i=0;i<sizeof(a);i++) { cout<<a[i]<<endl; } 2.通过at方式访问单个字符 for(int i=0;i<a.size(a);i++) { cout<<a.at(i)<<endl; } |
string字符修改 | b.at(位置)=修改内容 | string a="adasdsad"; a[1]='a'; a.at(5)='b'; |
string字符插入 | b.insert(位置,内容);//从0开始算 | string a="ada"; a.insert(位置,"内容");//从0开始算 |
string字符删除 | b.erase(位置,删除个数) | string b="dasda"; b.erase(位置,删除个数) |
string字串获取 | string b=a.substr(起始位置,截取个数); | string a="dasda"; string b=a.substr(起始位置,截取个数); |
string构造函数
-
string(); //创建一个空的字符串,例如string str;
-
string(const char*s);//使用字符串s初始化
-
string(const string&str);//使用一个string对象初始化另一个string对象(拷贝构造)
-
string(int n,char c);//使用n个字符c初始化(输出后为n个c ,c为字符)
string赋值操作
-
功能:给string字符串进行赋值
string字符串拼接
-
功能:实现在字符串尾部拼接字符串
.append(追加内容字符串老规矩上引号);
.append(追加内容,截取位置,截取长度);//空格也算长度
string查找和替换
功能描述
-
查找:查找指定字符串是否存在
-
替换:在指定的位置替换字符串
-
-
-
查找
string a="adbdaddacd";
int b=a.find("ac");//返回数据第一次出现的位置,注意从0开始算
有返回位置 无返回-1
int c=a.rfind("ac");
区别 rfind 从右往左查找
find从左往右查找
-
替换
-
string b="adasdwada"; b.replace(位置,数量,替换内容);//数量与内容量不等时位置起数量个字符替换为替换内容
string字符串的比较
功能描述
-
字符串之间的比较
比较方式
-
字符串是按字符的ASCLL码进行对比
-
=返回0
-
.>返回1
-
<返回-1
string a="xuejia zuishuai";
string b="nabixu de";
if(a.compare(b)==0)
{
cout<<"a=b"<<endl;
}
if else(a.compare(b)>0) //成立返回1
{
cout<<"a>b"<<endl;
}
else
{
cout<<"a<b"<<endl;
} //中文无法比
string字符存取
string中单个字符存取方式有两种
-
读取单个字符
1.通过[]访问单个字符
string a="adbsadad";
for(int i=0;i<sizeof(a);i++)
{
cout<<a[i]<<endl;
}
2.通过at方式访问单个字符
for(int i=0;i<a.size(a);i++)
{
cout<<a.at(i)<<endl;
}
-
修改单个字符
string a="adasdsad";
a[1]='a';
a.at(5)='b';
string插入和删除
功能描述
-
对string字符串进行插入和删除字符操作
插入
string a="ada";
a.insert(位置,"内容");//从0开始算
删除
string b="dasda";
b.erase(位置,删除个数)
string容器子串获取
功能描述
-
从字符串中获取想要的字串
函数原理
string a="dasda";
string b=a.substr(起始位置,截取个数);
函数、调用 | 意义 | 步骤 |
---|---|---|
string::npos | 字符串可存储的最大字符数,返回尾地址 | sring::npos |
a.capacity() | 容器的容量 | e.capacity; 容器的容量 |
a.reserve(int length) | 容器预留len个元素长度,预留位置不初始化,元素不可访问 | v.reserve(预留空间); 让其只开辟一次空间 |