目录
🤔string本质
📖string是c++风格的字符串,而string本质上是一个类
🔍string和char *区别:
📖1.char * 是一个指针。
📖2.string 是一个类,类内部封装了 char *,是一个char *类型的容器
🔍特点:
📖string类内部封装了很多的成员方法:
📖例如 查找find,拷贝copy,删除delete ,插入insert
📖string管理char*所分配的内存,因此我们不用担心复制越界和取值越界等,这些统一由类内部赋值。
🤔string的各种成员函数:
🔍1.string 构造函数
📖创建一个空的字符串:string ();
string str;
📖使用字符串s进行初始化:string (const char *s);
char s[10] = "aaaaaaaaa";
string c = string(s);
📖使用一个string类型的对象初始化另外一个string对象:string(const string &str);
string b = string(c);
📖使用n个字符初始化:string(int n,char)
string d = string(n, 'c');
🔍2.string 赋值函数
📖把char *类型字符串赋值给当前的字符串:string &operator =(const char *s);
string str1;
str1 = "aaaaaa";
📖把string类型的字符串赋值给当前字符串:string &operator=(const string *s);
string str2;
str2 = str1;
📖把字符赋值给当前的字符串:string &operator=(char c);
string str3;
str3 = 'a';
📖把字符串s赋值给当前字符串:string assign(const char *s);
string str4;
str4.assign("hellodsd");
📖把字符串s中的前n个字符赋值给当前字符串 :string assign(const char *s,int n);
string str5;
str5.assign("hello c++", n);
📖把字符串s中的从第n个开始的一直到结束的字符赋值给当前字符串:string assign(string s,int n);
string str4;
str4.assign("hellodsd");
string str8;
str8.assign(str4, n);
📖把字符串赋值给当前字符串:string assign (const string &s);
string str6;
str6.assign(str5);
📖把n个字符赋值给当前字符串:string assign(int n,char c);
string str7;
str7.assign(n, 'c');
🔍3.string 字符串拼接
📖把字符串拼接到一个string类型的对象的字符串尾部:string& operator +=(coonst char *str);
string str1 = "我";
str1 += "爱玩游戏";
📖把一个字符拼接到一个string类型的对象的字符串尾部:string& operator +=(const char c);
str1 += "S";
📖把一个string类型的对象拼接到另外一个string类型对象字符串的尾部:string& operator +=(const string &str);
string str1 = "我";
string str5 = "爱玩王者荣耀";
str1 += str5;
📖把字符串s连接到当前字符串结尾:string& append (const char *s);
string str1 = "我";
str1.append("asdas");
📖把字符串前n个字符连接到当前字符串末尾:string& append (const char *s ,int n);
str1.append("asdas", n);
📖把字符串s中从pos开始的n个字符连接到字符串结尾:string& append(const string &s,int pos,int n);
str1.append("asdasda", pos, n);
🔍4.string 查找和替换字符串
📖从pos位置开始查找s在str1字符串第一次出现的位置:int find(const stris, int pos = 0);
存在返回位置,不存在返回-1;
string str1 = "asdasda";
int pos = str1.find("da");
📖查找字符串s在str1字符串中第一次出现的位置,从pos开始查找:int find(const char* s, int pos = 0);
string str1 = "asdasda";
int pos = str1.find("asdas",pos);
📖从pos查找s的前n个字符在字符串str1中第一次出现的位置:int find(const char* s, int pos, int n);
string str1 = "asdasda";
int m = str1.find("ad", pos, n);
📖查找字符c在str1中从第一次出现位置:int find(const char c, int pos = 0);
string str1 = "asdasda";
int pos = str1.find("a",pos)
📖查找str2在str1从pos位置开始查找的最后一次位置:int rfind(const string& str, int pos = npos)
string str1 = "asdasda";
string str2 = "ad";
int pos = str1.rfind(str2,pos);
📖从str1的pos位置开始向前查找s的前n个字符在str1最后一次位置:int rfind(const char* s, int pos, int n);
📖pos:表示从哪个位置开始搜索,默认为字符串的末尾。如果指定了这个参数,则从指定的位置开始向前搜索。
📖n:表示要搜索的子字符串的长度。默认为字符串的长度。如果指定了这个参数,则不会搜索超过指定长度的子字符串。
string str1 = "asdasda";
int pos = str1.rfind("dadade",pos,n);
📖替换str1从pos开始的n个字符为字符串str:string& replace(int pos, int n, const string& str);
string str1 = "asdasda";
string str2 = "qwert";
str1.replace(0, 2, str2)
📖替换从pos开始的n个字符为字符串s: string& replace(int pos, int n, const char* s);
string str1 = "asdasda";
str1.replace(0, 4, "s");
🔍5.string 字符存取
string 中单个字符存取方式有两种:
📖1.char &operator [](int n); 通过[]方式取字符
#include<iostream>
using namespace std;
#include<string>
int main()
{
string str = "hello";
for (int i = 0; i < str.size(); i++)
{
cout << str[i] << " ";
}
}
📖2.char &at(int ) 通过at方法取字符
#include<iostream>
using namespace std;
#include<string>
int main()
{
string str = "hello";
for (int i = 0; i < str.size(); i++)
{
cout << str.at(i) << " ";
}
}
🔍6.string插入与删除
📖在str1的pos的位置插入字符串s: string & insert(int pos,const char *s);
string str1 = "hello";
str1.insert(pos, "111");
📖在str1的pos位置上插入str2:string & insert(int pos,const string &str);
string str1 = "hello";
string str2 = "C++";
str1.insert(pos, str);
📖在str1上指定一个pos位置插入n个字符c:string & insert(int pos,int n,char s);
string str1 = "hello";
str1.insert(pos, n, 'c');
📖删除从pos开始的n个字符:string & erase(int pos,int n=npos);
string str1 = "hello";
str1.erase(pos, n);
🔍7.string子串
📖返回str1从pos到n的字符串:string substr(int pos=0,int n=npos);
string str = "abcdefg";
string str1 = str.substr(0, 2);