string
是C++标准库中提供的用于处理字符串的类,是一个可变长的字符序列。如要使用string,需要添加string头文件,即#include<string>
。
1 定义
string s; //定义
string s = "abcd";
2 访问和修改字符串内容
-
下标运算符
[]
访问和修改单个字符 -
.size()
成员函数获取字符串的长度。 -
.push_back()
成员函数将单个字符添加到字符串的末尾。string s = "Hello"; s.push_back('!'); //s的值为"Hello!"
-
.pop_back()
成员函数从字符串末尾删除单个字符。string s = "Hello!"; s.pop_back(); // 现在s的值为 "Hello"
-
.append()
成员函数在当前字符串的末尾添加其他字符串。string s = "Hello"; s.append(" World!"); //s的值为"Hello World!"
-
除.
append()
函数以外,+=
操作符也可以实现字符串拼接。string s = "Hello"; s += " World!"; //s的值为"Hello World!"
-
-
.insert()
成员函数向字符串中添加元素。-
.insert(pos, str)
:在位置pos之前插入字符串strstring s = "Hello!"; s.insert(5, " World"); // 在位置 5 之前插入字符串 " World" // 现在 str 的值为 "Hello World!"
-
-
.erase()
成员函数来删除字符串中的内容。-
.erase(pos, len)
:从位置pos开始,删除长度为len的字符。被删除的字符包含位置pos的字符。string s = "Hello World!"; s.erase(6, 5); // 从位置 6 ('W')开始删除长度为 5 的字符 // 现在 str 的值为 "Hello!"
-
.erase(first, last)
:删除在范围**[first, last)**之间的字符。string s = "Hello World!"; auto first = s.begin() + 6; //指向('W') auto last = s.begin() + 11; //指向('!') sr.erase(first, last); // 删除范围在第6个字到第10个字符()(不包括最后一个字符)之间的字符 // 现在 s 的值为 "Hello!"
-
3 子串提取和搜索
-
.substr()
成员函数提取指定位置和长度的子串。string s = "abcdefg"; string subS = s.substr(0,2); //提取从下标为0的位置开始长度为2的字符串
-
.find()
成员函数进行字符串的搜索。(朴素匹配算法实现,时间复杂度高;KMP算法优化时间复杂度)-
.find(str)
:在字符串中搜索子串str
的第一个匹配项,并返回其位置。string sr = "Hello World!"; size_t pos = s.find("World"); // 在字符串中搜索 "World" 子串的第一个匹配项 // pos 的值为 6
-
.find(str, pos)
:从位置pos
开始,在字符串中搜索子串str
的第一个匹配项,并返回其位置。string s = "Hello World!"; size_t pos = s.find("or", 5); // 从位置 5 开始,在字符串中搜索 "or" 子串的第一个匹配项 // pos 的值为 7
-
4 字符串比较
- 可以使用
==
、!=
、<
、<=
、>
、>=
等操作符进行字符串的比较。
5 其他常用功能
.empty()
成员函数检查字符串是否为空,为空返回true
。reverse(s.begin(), s.end())
成员函数将一个字符串原地反转。
【C++】string用法
string
是C++标准库中提供的用于处理字符串的类,是一个可变长的字符序列。如要使用string,需要添加string头文件,即#include<string>
。
1 定义
string s; //定义
string s = "abcd";
2 访问和修改字符串内容
-
下标运算符
[]
访问和修改单个字符 -
.size()
成员函数获取字符串的长度。 -
.push_back()
成员函数将单个字符添加到字符串的末尾。string s = "Hello"; s.push_back('!'); //s的值为"Hello!"
-
.pop_back()
成员函数从字符串末尾删除单个字符。string s = "Hello!"; s.pop_back(); // 现在s的值为 "Hello"
-
.append()
成员函数在当前字符串的末尾添加其他字符串。string s = "Hello"; s.append(" World!"); //s的值为"Hello World!"
-
除.
append()
函数以外,+=
操作符也可以实现字符串拼接。string s = "Hello"; s += " World!"; //s的值为"Hello World!"
-
-
.insert()
成员函数向字符串中添加元素。.insert(pos, str)
:在位置pos之前插入字符串str
string s = "Hello!"; s.insert(5, " World"); // 在位置 5 之前插入字符串 " World" // 现在 str 的值为 "Hello World!"
-
.erase()
成员函数来删除字符串中的内容。.erase(pos, len)
:从位置pos开始,删除长度为len的字符。被删除的字符包含位置pos的字符。
string s = "Hello World!"; s.erase(6, 5); // 从位置 6 ('W')开始删除长度为 5 的字符 // 现在 str 的值为 "Hello!"
-
.erase(first, last)
:删除在范围**[first, last)**之间的字符。string s = "Hello World!"; auto first = s.begin() + 6; //指向('W') auto last = s.begin() + 11; //指向('!') sr.erase(first, last); // 删除范围在第6个字到第10个字符()(不包括最后一个字符)之间的字符 // 现在 s 的值为 "Hello!"
3 子串提取和搜索
-
.substr()
成员函数提取指定位置和长度的子串。string s = "abcdefg"; string subS = s.substr(0,2); //提取从下标为0的位置开始长度为2的字符串
-
.find()
成员函数进行字符串的搜索。(朴素匹配算法实现,时间复杂度高;KMP算法优化时间复杂度).find(str)
:在字符串中搜索子串str
的第一个匹配项,并返回其位置。
string sr = "Hello World!"; size_t pos = s.find("World"); // 在字符串中搜索 "World" 子串的第一个匹配项 // pos 的值为 6
-
.find(str, pos)
:从位置pos
开始,在字符串中搜索子串str
的第一个匹配项,并返回其位置。string s = "Hello World!"; size_t pos = s.find("or", 5); // 从位置 5 开始,在字符串中搜索 "or" 子串的第一个匹配项 // pos 的值为 7
4 字符串比较
- 可以使用
==
、!=
、<
、<=
、>
、>=
等操作符进行字符串的比较。
5 其他常用功能
-
.empty()
成员函数检查字符串是否为空,为空返回true
。 -
reverse(s.begin(), s.end())
成员函数将一个字符串原地反转。string s = "Hello World!"; reverse(str.begin(), s.end()); // 字符串s现在为 "!dlroW olleH"