内存释放和越界
越界:(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的更多相关文章
随机推荐
-
TensorFlow中权重的随机初始化
一开始没看懂stddev是什么参数,找了一下,在tensorflow/python/ops里有random_ops,其中是这么写的: def random_normal(shape, mean=0.0 ...
-
mssql禁用启用主键约束
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' --禁用 EXEC sp_msforeachtable 'ALTER TA ...
-
设计模式之二:MVC
模型(Model) 视图(View) 控制器(Controller) (MVC) 是 Cocoa 中的一种行为模块,并且也是所有 Cocoa 设计模式中使用最多的.在程序中按照它们的角色来分类这些对象 ...
-
Vert.x入门体验
Vert.x入门体验 一.概述 Vert.x(http://vertx.io)是一个基于JVM.轻量级.高性能的应用平台,非常适用于最新的移动端后台.互联网.企业应用架构. 二.安装配置 访问Vert ...
-
伪分布模式下执行wordcount实例时报错解决办法
问题1.不能分配内存,错误提示如下: FAILEDjava.lang.RuntimeException: Error while running command to get file permiss ...
-
NUnit Test Adapter----单元测试需要安装这个插件
最近通过VS2012集成Nunit的测试用例,想直接在VS中查看结果,分析测试覆盖率:所以找到了NUnit Test Adapter插件:该插件下载地址: http://visualstudiogal ...
-
ORA-15018: diskgroup cannot be created
创建ASM磁盘组的时候出错,具体报错如下: SQL> create diskgroup kel external redundancy disk 'ORCL:KEL1','ORCL:KEL2'; ...
-
自定义控件学习之菜鸟笔记一(Hello World)
一:引言 正在学习自定义控件的开发内容,做为菜鸟勤做笔记自然是必要任务了.本篇为本人学习自定义控件的学习笔记,借此和大家分享一下学习过程吧. 本人学习喜欢先看到具体的实例,然后再深入学习,故先从一个简 ...
-
45个非常有用的 Oracle 查询语句小结
45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...
-
JSSDK微信自定义分享
背景:15年之前的微信分享只需要加入一段js就可以实现.后来微信官方全部禁止了.现在的微信分享全部得使用jssdk. 一.分享功能: 在微信内(必须在微信里)打开网站页面,分享给朋友或者分享到朋友圈时 ...