《C++ Primer》 读书笔记——第十七章 标准库特殊设施

后面三章划重点的截图会多一些,我的水平太差,现在还无法用自己的语言描述这些概念…

第十七章 标准库特殊设施

17.1 tuple类型

在这里插入图片描述
类似于pair的概念,将一堆变量打包装进一个tuple里面

在这里插入图片描述

1. 定义和初始化tuple

tuple是一个模板,需要指出所有成员的类型
在这里插入图片描述

2. 必须使用直接初始化

在这里插入图片描述

3. 访问tuple成员

使用 get() , i表示一个正整数
在这里插入图片描述

17.2 bitset 类型

方便的进行位运算,处理二进制数
在这里插入图片描述

1. 定义和初始化 bitset

bitset是一个模板类,需要给出二进制数的位数来实例化类
在这里插入图片描述
在这里插入图片描述

2. bitset操作

在这里插入图片描述

17.3 正则表达式

需要包括头文件regex
在这里插入图片描述
在这里插入图片描述
regex_match和regex_search都是bool函数
如果输入序列和给定正则表达式匹配,则两个函数都返回true
如果输入序列中一个子串与正则表达式匹配,则regex_search返回true
在这里插入图片描述

1. 使用正则表达式库

在这里插入图片描述
大致思路:
用一个字符串表示正则表达式,然后使用该字符串构造出regex正则表达式对象。
根据regex对象使用对应的匹配函数,查看传入的字符串是否符合正则表达式。
在使用匹配函数查看是否匹配时,使用smatch对象保存结果

regex对象的选项

可以设置正则表达式的属性,比如忽略大小写匹配等
在这里插入图片描述
在这里插入图片描述
例子:忽略大小写
在这里插入图片描述
多个反斜杠是为了取消特殊符号的含义

指定或使用正则表达式时的错误

正则表达式在运行时才会被编译,所以正则表达式的编译非常慢,在程序中最好少用或者不用正则表达式
在这里插入图片描述
正则表达式发生错误时抛出的异常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

正则表达式类和输入序列类型

在这里插入图片描述
输入类型、正则表达式类型、存储结果的match类型必须要匹配

2. 匹配与regex迭代器类型

在这里插入图片描述
在这里插入图片描述
输入的字符串可能存在多个匹配的子串,使用迭代器可以遍历这些子串
创建迭代器的时候,指定输入字符串的开头和结尾,指定正则表达式,得到匹配子串的数组,返回该数组的迭代器。

使用sregex _iterator

在这里插入图片描述

使用匹配数据

在这里插入图片描述
此例中是为了取得匹配子串在输入字符串中前后40位的信息
在这里插入图片描述
在这里插入图片描述
smatch是在使用匹配函数时用来存储结果的变量

3. 使用子表达式

可以将一个正则表达式拆分成多个子表达式,子表达式通常在整个正则表达式中用括号括起来
在这里插入图片描述
匹配正则表达式子串的子表达部分可以通过存储结果的match对象进行访问。
0代表整个匹配子串,子表达从1开始计数
在这里插入图片描述

子表达式用于数据验证

处理具有一定格式的数据时,用正则表达式比较好。而且可以使用正则表达式的子表达对匹配子串进行拆分处理。
在这里插入图片描述
正则表达式的特殊表示形式
在这里插入图片描述
实际引用例子:处理电话号码
在这里插入图片描述
在这里插入图片描述

使用子匹配操作

下面的表格适用于存储结果的match类
在这里插入图片描述
使用下标访问符来获得对应的子表达式
在这里插入图片描述
虽然整个大的匹配成功的
但有些子匹配是可选的,比如括号。当左括号出现时右括号也必须出现,这个函数就是检查这些子匹配是否符合规范

4. 使用regex_replace

将符合正则表达式的部分进行替换
在这里插入图片描述
在这里插入图片描述
传入正则表达式,目标字符串,格式字符串。返回一个替换后的字符串
格式字符串以目标字符串中子表达式为素材,自由组合成替换后的字符串。
在这里插入图片描述

17.4 随机数

需要包括头文件 random。引擎负责生成随机数序列,分布负责将随机数序列限定到特定范围上
在这里插入图片描述

1. 随机数引擎与分布

随机数引擎是一个类,定义调用运算符。调用时返回一个随机数
在这里插入图片描述
在这里插入图片描述

分布类型与引擎

分布类型将随机数生成引擎进行包装,得到指定范围内的随机数。
在这里插入图片描述
在这里插入图片描述
调用分布类型时需要传递随机引擎对象,而不是随机引擎产生的随机数

随机生成的数值序列

在这里插入图片描述
随机数引擎再创建时就已经把随机数序列确定好了
在这里插入图片描述

设置随机数发生器种子

给随机数生成器不同的种子,使其生成不同的随机数序列
在这里插入图片描述

2. 其他随机数分布

在这里插入图片描述

生成随机实数

在这里插入图片描述

使用分布的默认结果类型

在这里插入图片描述

生成非均匀分布的随机数

在这里插入图片描述

返回随机的bool值

在这里插入图片描述

17.5 IO库再探

1. 格式化输入与输出

在这里插入图片描述
格式状态类似于状态机,处于不同的状态打印相同的符号,输出会不一样。
而操作符则用来改变状态

在这里插入图片描述

控制布尔值的格式

在这里插入图片描述

指定整数值的进制

在这里插入图片描述

在输出中打印出进制

在这里插入图片描述

输出补白

在这里插入图片描述
在这里插入图片描述

控制输入格式:不跳过空白符

在这里插入图片描述

2. 未格式化的输入/输出操作

未格式化IO允许我们将一个流当作一个无解释的字节序列来处理

单字节操作

在这里插入图片描述

查看下一个字符

在这里插入图片描述

从输入操作返回的int值

读取字符的返回值都为int
在这里插入图片描述

多字节操作

在这里插入图片描述

底层函数容易出错

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值