string_01
内存释放和越界
越界:(1)、复制越界,(2)、取值越界
构造函数
(1)、默认 空(无参)
(2)、拷贝(const string &)
(3)、带参数: const char * // ZC: 经测试 和 查看源码,该构造函数也是将指针指向的内容复制一份,而非直接使用参数指针的值。
int n, char c
字符操作:
[?] ==> const char & (ZC: 获取)
at(?) ==> const char & (ZC: 获取)
[?] ==> char (ZC: 设置)
at(?) ==> char (ZC: 设置)
[?]越界 ==> 内存错误 ==> 崩溃
at(?)越界 ==> out_of_range异常
出:
const char * string::c_str() const;
ZC: const函数: 不能改变类中非静态成员的值
进:
int string::copy(char* s, int n, int pos=0) const;
返回 实际拷贝的字符个数
s : 为何不使用 "const char* s"?
n : s中需要拷贝的字符的个数
pos : s中 起始字符的索引值idx
长度:(不包括结尾的'\0')
int string::length() const;
bool string::empty() const;
赋值:
string& = const string &
string& assign(const string &) // 这个和下面的有重复?
string& assign(const char *s, int n); // s中的前n个字符
string& assign(const string &)
string& assign(const string & s, int start, int n);
start : s字符中的起始索引
n : s中的n个字符
连接:
string& += const string & 尾部
string& += const char * 尾部
string& append(const char *); 尾部
string& append(const char *s, int n); s中的前n个字符,添加到尾部
string& append(const string &); 尾部
string& append(const string &s, int pos, int n); 尾部
pos : s中字符的开始索引
n : s中需要拷贝的字符个数
string& append(int n, char c); n个字符c,添加到尾部
比较:
int string::compare(const string *s) const;
int string::compare(const char *s) const;
> 返回1
< 返回-1
== 返回0
ASCII码表,越前越小
子串:
string string::substr(int pos=0, int n=npos) const;
pos : 开始索引
n : n个字符(默认值npos是指string中的全部字符吗?)
查找:
int string::find(char c, int pos=0) const; // 从pos开始找字符c的位置
int string::find(const char *s, int pos=0) const; // 从pos开始找字符串s的位置
int string::find(const string &s, int pos=0) const; // 从pos开始找字符串s的位置
找不到,返回-1
找到第一个符合条件的,就返回吗?
int string::rfind(char c, int pos=0) const; // 从pos开始找字符c的位置
int string::rfind(const char *s, int pos=0) const; // 从pos开始找字符串s的位置
int string::rfind(const string &s, int pos=0) const; // 从pos开始找字符串s的位置
找不到,返回-1
找到第一个符合条件的,就返回吗?
返回的是 正向的索引值?还是逆向的索引值?
插入:
string& string::insert(int pos, const char *s); // 在pos位置插入字符串s
string& string::insert(int pos, const string &s); // 在pos位置插入字符串s
string& string::insert(int pos, int n, char c); // 在pos位置插入 n个字符c
删除:
string& string::erase(int pos=0, int n=npos); // 删除pos开始的n个字符,返回删除后的字符串
替换:
string& string::replace(int pos, int n, const char *s);
string& string::replace(int pos, int n, const string &s);
这两个函数是分两个步骤执行的:
(1)、删除 pos开始的 n个字符
(2)、pos处 插入 字符串s
交换:
void string::swap(string & s2);
string_01的更多相关文章
随机推荐
- LeetCode--53 最大连续子序列(总结)
# 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. # 示例:# 输入: [-2,1,-3,4,-1,2,1,-5,4],# 输出: 6# 解释 ...
- [lr] 基本色调调整和色调曲线
基本色调调整 • 曝光度调整 ▶ 控制区域 在Lightroom中,软件提示我们曝光控制的是如图中间调的区域.我们把鼠标移动到曝光工具条上,软件会提示我们这个区域: ▶ 实际效果 ▪ 增加曝光值 增加 ...
- python写http post请求的四种请求体
Web自动化测试(25) HTTP 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式.常见的四种编码方式如下: 1.appli ...
- Oracle业务用户密码过期问题的解决
实验环境:Oracle 11.2.0.4 如果DBA不知道业务用户密码,当业务密码过期,应用要求DBA帮忙重设为原来的密码. 1.查询业务用户密码 从user$查到hash加密过的值: select ...
- git克隆代码
1.vs--team explorer-clone,或者team-connect to tfs-clone 2.1输入git的url,2输入本地放代码的文件夹,3点clone,克隆出4.双击4 3.点 ...
- Understanding Convolutional Neural Networks for NLP
When we hear about Convolutional Neural Network (CNNs), we typically think of Computer Vision. CNNs ...
- Python: 字符串搜索和匹配,re.compile() 编译正则表达式字符串,然后使用match() , findall() 或者finditer() 等方法
1. 使用find()方法 >>> text = 'yeah, but no, but yeah, but no, but yeah' >>> text.find( ...
- LINUX环境变量(一)
Linux 的变量可分为两类:环境变量和本地变量 环境变量,或者称为全局变量,存在与所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有继承性,即子 ...
- mysql 从数据库中获取多条记录,二维展示数据
展示要求: 客户/日期 2017-10-16 1017-10-17 2017-10-18 客户1 客户2 数据库中数据: 解决办法: 1.新建一个实体类:客户名称.客户数据(A ...
- linux环境下安装tomcat6
1)下载apache-tomcat-6.0.10.tar.gz 2)#tar -zxvf apache-tomcat-6.0.10.tar.gz ://解压 3)#cp -R apache-tomca ...