[C++] STL - string部分函数小合集

1.STL是什么?

STL, Standard Template Librarty的缩写, 翻译成中文就是标准模版库.

  • 算法
  • 容器: 存放数据的东西(数据类型)
  • 迭代器: 一种用于遍历容器(如vector、list、map等)中元素的对象.

2.string 本身用法

2-2.string库导入

肥肠的简单(非打错字):

#include <string>

2-1.定义与赋值

两种方法:

string yoursname("...");
string yoursname = "...";

3.string 成员函数

3-1.substr()函数

用于从字符串中提取子字符串. 参数:(start, length)

string s("Hello Frog!");

cout << s.substr(0, 4);
// 此时应该输出o Frog!

3-2.find()和rfind()函数

find(): 从前往后查找元素, 返回下标

rfind(): 从后往前查找元素, 返回下标

注意: 找不到会返回string::npos, 是string类的一个常量, 本质上是无符号(unsigned)的-1.

用法:

string s("Hello world");                 // 相当于string s = "Hello world!";
cout << s.find('l') << endl;             // 第一次出现'l'的下标, 应输出2
cout << s.find('u') << endl;             // 找不到'u', 应输出string::npos
cout << s.find("wor") << endl;           // 返回"wor"的位置, 应输出6
cout << s.find("l", 4) << endl;          // 从下标为4的位置开始搜索子串"l", 应输出9
cout << s.rfind('l') << endl;            // 返回最后一次出现'l'的下标, 应输出9

3-3.erase()函数

功能: 删除子串

用法:

string s1("Real Steel");
s1.erase(1, 3);
// 删除子串(1, 3), 此时s1为"R Steel", 子串表示: (start, length)

s1.erase(5);
// 删除下标5以及后面的所有字符, 此时s1 = "R Ste"

3-4.replace()函数

功能: 将子串替换为其他字符(串)

用法:

// 用法1
string s1("Harry Potter");
s1.replace(2, 3, "XXX")
// 子串"rry"被替换为"XXX", s1此时为"HaXXX Potter"
// 子串表示为(start, length)

// 用法2
string s2("Real Steel");
s2.replace(1, 3, "123456", 2, 4);
// 此时s2为"R3456 Steel"

3-4.stoi(), stoll(), stod()函数

函数功能记忆方法
stoi();字符串转intstoi是string to int的缩写
stoll();字符串转long longstoll是string to long long的缩写
stod();字符串转doublestod是string to double的缩写
string s("1234567")
cout << s.stoi() << endl << s.stoll() << endl << s.stod();
// 输出:
// 1234567
// 1234567
// 1234567.0

3-5. to_string()函数

将short, int, long long等数据类型转化成string.

string s = to_string('12.34');
cout << s;

// 输出: 12.34

3-6. reverse()函数

注意!!!该函数在<algorithm>库内!!!

string s('Hello Frog!');
cout << reverse(s.begin(), s.end()) << endl;

// 输出: !gorF olleH
// (此段输出本蛙打得很痛苦)

4.习题

(以下习题选自洛谷, AC代码均为原创, 非转载)

[C++]洛谷B2119 删除单词后缀 

[C++] LUOGU P1808 - 单词分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值