【C++】string类(二)相关接口介绍及其使用
文章目录
- 一、string相关接口
- 1、append
- 2、push_back
- 3、+=
- 4、insert
- 5、erase
- 6、replace
- 7、find
- 练习
- (1)方法1:使用find、replace
- (2)方法2:遍历替换
- 8、rfind
- 9、find_first_of
- 10、find_last_of
- 11、find_first_not_of
- 12、find_last_not_of
- 13、substr
- 二、谢谢观看!
上一篇文章链接:string(一)
(该篇为(一)的续作)
一、string相关接口
1、append
void test04()
{string s("hello world");s.append("aaa");cout << s << endl;
}
2、push_back
对字符串尾插一个字符
void test05()
{string s("hello world");s.push_back('A');cout << s << endl;
}
3、+=
+= 也是用来拼接字符/字符串的,相较以上两种接口,+=更常用。
void test06()
{string s("hello world");s += 'a';s += "bbb";cout << s << endl;
}
4、insert
插入
最常用的是第一个,在pos位置插入字符串。
void test07()
{string s("hello world");s.insert(0, "w");cout << s << endl;
}
5、erase
删除元素
void test08()
{string s("hello world");s.erase(0, 1);//在第0个位置删除1个元素cout << s << endl;
}
void test08()
{string s("hello world");//头删s.erase(0, 1);//在第0个位置删除1个元素//尾删// s.erase(s.size() - 1, 1);s.erase(--s.end());//迭代器cout << s << endl;
}
6、replace
替换
void test09()
{string s("hello world");s.replace(0, 2, "a");//从第0个位置开始的2个字符替换为"a"cout << s << endl;
}
7、find
查找子字符串str在该字符串中的位置,查找成功返回该子串的首字符位置,失败返回npos
void test11()
{string s("hello world");cout << s.find(" ");//输出结果为:5
}
练习
练习:
将字符串中的空格全部替换为“%%”
(1)方法1:使用find、replace
void test10()
{string s("hello world aaa bbb ccc f");int pos = s.find(' ');while (pos != string::npos){s.replace(pos, 1, "%%");pos = s.find(' ', pos + 2);}cout << s << endl;
}
(2)方法2:遍历替换
void test10()
{string s("hello world aaa bbb ccc f");string tmp;for (auto ch : s){if (ch == ' ')tmp += "%%";elsetmp += ch;}s = tmp;cout << s << endl;
}
8、rfind
和find作用相同,只不过是倒着查找。
void test11()
{string s("hello world ddd");cout << s.rfind(" ");//输出结果为:11
}
9、find_first_of
与字符串str中任一字符进行匹配。
例如:将字符串s中含有a/b/c/d的字符全部修改为*
void test12()
{string s("hello world abfg cdmn");int pos = s.find_first_of("abcd");while (pos != string::npos){s.replace(pos, 1, "*");pos = s.find_first_of("abcd", pos + 1);}cout << s << endl;
}
10、find_last_of
与字符串str中任一字符进行匹配,但是倒着进行查找匹配。
11、find_first_not_of
排除,查找字符串中非str中任一字符的下标。
例如:将字符串s中非a/b/c/d的字符全部修改为*
void test12()
{string s("hello world abfg cdmn");int pos = s.find_first_not_of("abcd");while (pos != string::npos){s.replace(pos, 1, "*");pos = s.find_first_not_of("abcd", pos + 1);}cout << s << endl;
}
12、find_last_not_of
查找字符串中非str中任一字符的下标,但是倒着进行查找匹配。
13、substr
拷贝该字符串中第pos位置,长度为len的子串。
void test13()
{string s("hello world");cout << s.substr(6) << endl;
}