Loading... ## string基本概念 ### 本质: string是c++风格的字符串,而string本质上是一个类 ### string和char *的区别: char *是一个指针 string是一个类,类内部封装了char *,管理这个字符串,是一个char *型的容器 ### 特点: string类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete,替换replace,插入insert string管理char*所分配的内存,不用担心复制越界和取值越界,由类内部进行负责 ## string构造函数 <div class="tip inlineBlock success"> ### 构造函数原型: string(); //创建一个空的字符串,例如:string str; string(const char* s); //使用字符串s初始化 string(const string& str) ; //使用一个string对象初始化另一个string对象 string(int n, char c) ; //使用n个字符c初始化 </div> ### 示例: ```cpp #include<iostream> #include<string> using namespace std; void text() { string s1; //默认构造 const char* s = "hello world";//使用字符串s初始化 string s2(s); cout << "s2 = "<<s2 << endl; string s3(s2);//copy s2 字符串 cout << "s3 = " << s3 << endl; string s4(10, 'a');//字符串赋初值 cout << "s4 = " << s4 << endl; } int main() { text(); return 0; } ``` ## 赋值操作 ### 功能描述: 给string字符串进行赋值 ### 赋值的函数原型: <div class="tip inlineBlock success"> string& operator = (const char* s); //char* 类型字符串 赋值给当前的字符串 string& operator = (const string &s); //把字符串s赋给当前的字符串 sting & operator = (char c); //字符赋值给当前的字符串 string& assign(const char *s); //把字符串s赋值给当前的字符串 string& assign(const char*s, int n); //把字符串s的前n个字符串赋给当前的字符串 string& assign(const string &s); //把字符串s赋值给当前字符串 string& assign(int n, char c) //用n个字符c赋给当前字符串 </div> ### 示例: ```cpp #include<iostream> #include<string> using namespace std; void text() { string s1; //默认构造 s1 = "hello world"; //char* 类型字符串 赋值给当前的字符串 cout << s1 << endl; string s2; s2 = s1; //把字符串s赋给当前的字符串 cout << s2 << endl; string s3; s3 = 'a';//字符赋值给当前的字符串 cout << s3 << endl; string s4; s4.assign("hello world");//把字符串赋值给当前字符串 cout << s4 << endl; string s5; s5.assign("hello world", 5);//把字符串s的前n个字符串赋给当前的字符串 cout << s5 << endl; string s6; s6.assign(s5);//把字符串s赋值给当前的字符串 cout << s6 << endl; string s7; s7.assign(5, 'a');//用n个字符c赋给当前字符串 cout << s7 << endl; } int main() { text(); return 0; } ``` ## 字符串拼接 ### 功能描述: 实现在字符串末尾拼接字符串 ### 函数原型: <div class="tip inlineBlock success"> string& operator += (const char* str); //重载 += 操作符 string& operator +=(const char c); //重载 += 操作符 string& operator +=(const string& str); //重载 += 操作符 string& append(const char *s); //把字符串s连接到当前字符串结尾 string& append(const char *s, int n) //把字符串s的前n个字符连接到当前字符串结尾 string& append(const string &s) //同operator += (const string& str) string& append(const string &s, int pos, int n) //字符串s中从pos开始的n个字符连接到字符串结尾 </div> ### 示例: ### 示例: ```cpp #include<iostream> #include<string> using namespace std; void text() { string s1 = "本当迷"; s1 += "爱编程";//把字符串拷贝到s1末尾 s1 += ":";//把字符拷贝到s1末尾 string s2 = "c / c++"; s1 += s2;//把字符串s2拷贝到s1末尾 cout << s1 << endl; string s3 = "bendangmi"; s3.append(" love");//把字符串拷贝到s3末尾 s3.append("c/c++abcd", 5);//把字符串的前5个字符拷贝到字符串s3末尾 s3.append(s1);//把s1字符串拷贝到s3字符串末尾 s3.append(s1, 0, 2);//从下标0开始截取2个字符到字符串s3末尾 cout << s3 << endl; } int main() { text(); return 0; } ``` ## 字符串查找和替换 ### 功能描述: 查找:查找指定字符串是否存在 替换:在指定的位置替换字符串 ### 函数原型: <div class="tip inlineBlock success"> int find(const string& str, int pos = 0)const; //查找str第一次出现位置,从pos开始查找 int find(const char* s, int pos = 0)const; //查找s第一次出现的位置,从pos开始查找 int find(const char* s, int pos, int n)const; //从pos位置查找s的前n个字符第一次出现的位置 int find(const c, int pos = 0)const; //查找字符c第一次出现的位置 int rfind(const string& str, int pos = npos)const; //查找str最后一次位置,从pos开始查找 int rfind(const char* s, int pos = npos)const; //查找s最后一次出现位置,从pos开始查找 int rfind(const char* s,int pos , int n)const; //从pos查找s的前n个字符最后一次位置 int rfind(const char c, int pos = 0)const; //查找字符c最后一次出现的位置 string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串str string& replace(int pos, int n, const char* s); //替换从pos开始的n个字符为字符串s </div> ### 示例: ```cpp #include<iostream> #include<string> using namespace std; //查找 void text() { string str1 = "abcdefgfg"; int pos = str1.find("fg");//从左边开始查找 cout << pos << endl; int pos1 = str1.rfind("fg");//从右边开始查找 cout << pos1 << endl; } //替换 void text01() { string str1 = "abcdefg"; str1.replace(1, 3, "1111"); //从下标为1的位置往后三个字符用“1111”替换 cout << str1 << endl; } int main() { text(); text01(); return 0; } ``` ## 字符串比较 ### 功能描述: 字符串之间的比较 ### 比较方式: 字符串比较是按字符的ASCII码进行对比 = 返回 0 》返回 1 《 返回 -1 ### 函数原型: int compare(const string &s)const; //与字符串s比较 int compare(const char *s)const; //与字符串s比较 ### 示例: ```cpp #include<iostream> #include<string> using namespace std; //查找 void text() { string s1 = "hello"; string s2 = "hello bendangmi"; if (s1.compare(s2) == 0) { cout << "s1与s2字符相等" << endl; } else if (s1.compare(s2) > 0) { cout << "s1 大于 s2" << endl; } else { cout << "s1 小于 s2" << endl; } } int main() { text(); return 0; } ``` ## 字符串存放 ### string中单个字符存放方式有两种: char& operator[](int n); //通过[]方式取字符 char& at(int n); //通过at方式获取字符 ### 示例: ```cpp #include<iostream> #include<string> using namespace std; void text() { string s1 = "hello"; for (int i = 0; i < s1.size(); i++) { cout << s1[i] << " "; } cout << endl; for (int i = 0; i < s1.size(); i++) { cout << s1.at(i)<<" "; } cout << endl; s1[0] = 'c'; s1.at(1) = 'b'; cout << s1; } int main() { text(); return 0; } ``` ## 字符串插入和删除 ### 功能描述: 对string 字符串进行插入和删除字符操作 ### 函数原型: string& insert(int pos, const char* s); //插入字符串 string& insert(int pos, const string& str); //插入字符串 string& insert(int pos, int n, char* c); //在指定位置插入n个字符c string& erase(int pos, int n = npos); //删除从pos开始的n个字符 ### 示例: ```cpp #include<iostream> #include<string> using namespace std; void text() { string s1 = "hello"; s1.insert(1, "oooo");//从下标为1的位置前插入字符串 cout << s1 << endl; s1.erase(1, 4);//从下标为1的位置往后删除4个字符 cout << s1 << endl; } int main() { text(); return 0; } ``` ## 字符串获取 ### 功能: 从字符串中获取想要的字串 ### 函数原型: string substr(int pos = 0, int n = npos)const; //返回pos开始的n个字符组成的字符串 ### 示例: ```cpp #include<iostream> #include<string> using namespace std; void text() { string s1 = "hello"; string s2 = s1.substr(2, 2);//从下标为2的位置往后截取两个字符 cout << s2 << endl; string s3 = "bendangmi@qq.com"; int pos = s3.find("@"); string s4 = s3.substr(0, pos); cout << s4 << endl; } int main() { text(); return 0; } ``` 最后修改:2021 年 09 月 18 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果文章有用,请随意打赏。
1 条评论
牛啊牛啊