string_01
2016-04-20 14:14
344 查看
内存释放和越界
越界:(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);
越界:(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);
相关文章推荐
- dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
- nginx配置解释及优化
- C++编程中的函数指针初步解析
- CodeForces - 664A Complicated GCD (技巧)水
- 山东省第五届ACM省赛题——Weighted Median(模拟)
- Am命令用法
- 使用苹果地图定位地理信息反编码 遇到 Error Domain=kCLErrorDomain Code=8 问题
- linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
- Linux shell脚本中父子进程与变量的分析
- Conquering Keokradong && Get the Containers(二分)
- 利用Python如何生成随机密码
- UIDynamicAnimator
- spark sql运行错误
- Android布局RelativeLayout(相对布局)详解
- Visual Studio 调试小技巧
- Jquery Ajax 使用备忘
- 动态生成img的链接
- Django filter符合表示"不等于"
- [改善Java代码]别让null值和空值威胁到变长方法
- OpenERP QWeb模板标签笔记