C++:STL容器的学习-->string
- 1. 构造方法
- 2. string的赋值操作
- 3. string字符串的拼接
- 4. string 查找和替换
- 5. string字符串的比较
- 6. string字符存取
- 7. string 插入和删除
- 8. string截取
需要添加头文件#include <string>
1. 构造方法
string() 创建空的字符串
string(const char *s) 使用字符串s进行初始化
string(const string& str) 使用一个string对象初始化另外一个string对象
string(int n,char c) 使用n个字符c初始化
int main() {
string str1;
cout << str1 << endl;
char *a = "hello world!";
string str2(a);
cout << str2 << endl;
string str3(str2);
cout << str3 << endl;
char b = '1';
string str4(10,b);
cout << str4 << endl;
return 0;
}
2. string的赋值操作
string& operator = (const char *s) char*类型字符串赋值给当前的字符串
string& operator = (const string &s) 把字符串s赋值给当前的字符串
string& 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赋值给当前的字符串
int main() {
string str1 = "hello world!";
cout << str1 << endl;
string str2;
str2 = str1;
cout << str2 << endl;
string str3;
str3.assign(str2);
cout << str3 << endl;
string str4;
str4.assign(str3,5);
cout << str4 << endl;
string str5;
str5.assign(10,'a');
cout << str5 << endl;
return 0;
}
3. string字符串的拼接
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)
string& append(const string &s,int pos,int n) 字符串s中从pos开始的n个字符连接到字符串结尾
int main() {
string str1;
str1 += "hello c++";
cout << str1 << endl;
string str2 = "hello";
str2.append(" c++2");
cout << str2 << endl;
string str3 = "hello";
str3.append(str1,5,10);
cout << str3 << endl;
return 0;
}
4. string 查找和替换
find、rfind找不到目标字符串时返回-1
int find(const string &str,int pos=0) const 查找str第一次出现位置,从pos开始查找
int find(const char *s,int pos=0) const
int find(const char *s,int pos,int n) const 从pos位置查找s的前n个字符第一次位置
int find(const char c,int pos=0) const 查找字符c第一次出现的位置
int rfind(const string &str,int pos=0) const
int rfind(const char *s,int pos=0) const
int rfind(const char *s,int pos,int n) const
int rfind(const char c,int pos=0) const
string& replace(int pos,int n,const string & str) 替换从pos开始的n个字符为字符串str
string& replace(int pos,int n,const char *s) 替换从pos开始的n个字符为字符串s
int main() {
string str1 = "hello C++ C++";
int pos = str1.find("C++");
cout << pos << endl;
pos = str1.rfind("C++");
cout << pos << endl;
cout << str1.replace(6,3,"Python")<< endl;
return 0;
}
5. string字符串的比较
按字符的ASCII码进行对比
返回 0、1、-1
int compare(const string &s) const 与字符串s进行比较
int compare(const char *s) const 与字符串s进行比较
int main() {
string str1 = "c++",str2 = "c++";
cout << str1.compare(str2) << endl;
return 0;
}
6. string字符存取
string单个字符存取方式有两种
char& operator[](int n) 通过[]方式存取字符
char& at(int n) 通过at方式获取字符
int main() {
string str1 = "hello world!";
for (int i = 0; i < str1.size(); ++i) {
cout << str1[i] << " " << str1.at(i)<<endl;
}
str1[0] = 'e';
str1.at(1) = 'h';
cout << str1 << endl;
return 0;
}
7. 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) 删除从pos开始的n个字符
int main() {
string str1 = "hello";
str1.insert(5," C++");
cout << str1 << endl;
str1.insert(5,5,'1');
cout << str1 << endl;
str1.erase(5,5);
cout << str1 << endl;
return 0;
}
8. string截取
string substr(int pos,int n) const 返回由pos开始的n个字符组成的字符串
int main() {
string str1 = "hello C++";
cout << str1.substr(5,4) << endl;
return 0;
}