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的更多相关文章
随机推荐
- em和px比较
1em=16px. em具有继承性. 如果定义了 body{font-size=12px;} #title{font-siez=2.6em;} 而id=title恰好在body里面,那么,id=tit ...
- Lintcode: Heapify && Summary: Heap
Given an integer array, heapify it into a min-heap array. For a heap array A, A[0] is the root of he ...
- checkBox的使用和事件监听
直接上代码: <!DOCTYPE html> <html> <head> <title></title> </head> < ...
- mysql套接字文件
- STA分析(二) multi_cycle and false
multicycle path:当FF之间的组合逻辑path propagate delay大于一个时钟cycle时,这条combinational path能被称为multicycle path. ...
- Python实现在给定整数序列中找到和为100的所有数字组合
摘要: 使用Python在给定整数序列中找到和为100的所有数字组合.可以学习贪婪算法及递归技巧. 难度: 初级 问题 给定一个整数序列,要求将这些整数的和尽可能拼成 100. 比如 [17, 1 ...
- C++ Word Count 发布程序
前段时间,模仿 Linux 系统下的 wc 程序,在 Windows 系统环境下使用 C/C++ 实现了一个相似的 WC 程序,只不过有针对性,针对的是 C/C++,Java 等风格的源代码文件. 此 ...
- Linux服务器---DansGuardian
DansGuardian DansGuardian可以限制客户端的访问,通过这个软件,我们可以限制哪些网站不可以访问.哪些内容不能下载. 1.下载DansGuardian,提供一个网址http://w ...
- mysql修改Truncated incorrect DOUBLE value:
UPDATE shop_category SET name = 'Secolul XVI - XVIII' AND name_eng = '16th to 18th centuries' WHERE ...
- C/C++之全局、static对象/变量的初始化问题
关于全局.static对象/变量的初始化问题 1. 全局变量.static变量的初始化时机:main()函数执行之前(或者说main中第一个用户语句执行之前). 2. 初始化顺序. 1)全局对象.外部 ...