第4章C++标准库STLstring类.ppt_第1页
第4章C++标准库STLstring类.ppt_第2页
第4章C++标准库STLstring类.ppt_第3页
第4章C++标准库STLstring类.ppt_第4页
第4章C++标准库STLstring类.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第三章内容回顾,类的定义 成员 成员函数 保护数据 封装 构造函数 与类同名 析构函数 重载构造函数 默认参数构造函数 对象创建过程,2,第四章,C+ 标准库STL中的string类,3,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,4,C+标准库中的String类,C+模板类basic_string提供了字符串基本操作。 C+定义了别名:string typedef basic_string string string 定义在 头文件中,5,C+标准库中的String类,String类对象可以调用basic_string的构造函数,复制构造函数,以及其它成员函数,包括:strcmp, strcpy, strcat,strlen等。 C与C+中串定义的不同: C中为字符指针char *, 是指针. 字符串以0结尾,用于标识串结束。 C+中string为一个类的别名,实质为类,不以0结尾,长度放于属性length中. 它不是指针 String的第一个下标为0,最后一个为length-1,6,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,7,String 特性,string类的属性,包括: string中字符个数尺寸: size string本次不增加内存,能存放元素的总数 容量: capacity string对象中可以存放string的最大长度 最大长度: max_size string类的成员函数,包括: 构造函数, 求属性, 赋值, 连接, 比较, 求子串, 交换串, 寻找字符, 替换字符, 插入字符, 转换为char *串, 串流处理,8,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,9,String类的构造函数,String对象的构造: 调用构造函数 string s1(“hello“); string s1(8,x); /产生8个x的串 string s1=“hello“; string s2(s1); /复制构造函数 string s3; /默认构造函数,空串,10,String类的求属性函数,#include #include using namespace std; int main() string s(“tomato”); cout “capacity: ” s.capacity() “n max size: ” s.max_size() “n size: ” s.size() “n length: ” s.length() “n empty: ” (s.empty()? “true”: “false”); ,11,运行结果: capacity: 31 Max_size: 4294967293 Size: 6 Length: 6 Empty: false,12,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,13,String的赋值,连接,String s1(“cat”), s2, s3 s2=s1; -s2: “cat” s3.assign(s1) ; -s3: “cat” s22=p; -s2: “cap” s3.at(0)=p -s3: “pat” 运算不做越界检查,越界不报错 at()做越界检查,越界报错 s2=s2+ “ is good! ” - s2: cap is good! s1.append( “ is white”) -s1: cat is white s3.append(s2, 3, s2.size() -s3: pat is good!,14,String的比较,String s1(“cat”), s2(“cap”), s3(“cat cap”) if (s1=s2) cout 0) cout s2 !”; else if (f s2!,15,String的比较,String s1(“cat”), s2(“cap”), s3(“cap cat ”) int f = pare(0,3, s3, 4,3 ) 0: s1的起始下标, 3:长度 4: s2的起始下标, 3:长度 if (f = 0) cout 0) cout ”; else if (f 0) cout “ ”; - = pare(2,5, s2), s1从2下标长度为5的子串和s2整体比,16,String的子串和交换,String s1(“cat”), s2(“cap”), s3(“cap cat ”) s3.substr(5, 3); - “cat” 求s3从5下标开始长度为3的子串 s1.swap(s2); - s1: “cap” s2: “cat” 互换s1和s2的值,17,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,18,String的查找,替换,插入,String s1(“cat”), s2(“cap”), s3(“cap cat ”) s3.find(“ca”) -在s3中从0下标开始向后查找 首次 “ca”出现的起始下标, 此刻为0 s3.find(“ca”, 3) -在s3中从3下标开始向后查找 首次 “ca”出现的起始下标, 此刻为4 s3.rfind(“ca”) -在s3中从size()-1下标开始向前查找 “ca”出现的起始下标, 此刻为4 s3.find_first_of(“spqtw”) 在s3中从0下标开始向后 首次出现 “spqtw”5个字符中任意一个字 符的起始下标, 此刻为2 (p 出现),19,String的查找,替换,插入,String s1(“cat”), s2(“cap”), s3(“cap cat ”) s3.find_last_of(“spqtw”) 在s3中从0下标开始向后 末次出现 “spqtw”5个字符中任意一个字 符的起始下标, 此刻为6 (t 出现) s3.find_first_not_of(“spqtw”) 在s3中从0下标开始向后 首次不出现 “spqtw”5个字符中任意一个字 符的起始下标, 此刻为0 (c 出现) s3.find_last_not_of(“spqtw”) 在s3中从0下标开始向后 末次出现 “spqtw”5个字符中任意一个字 符的起始下标, 此刻为5 (a 出现),20,String的查找,替换,插入,String s1(“cat”), s2(“cap”), s3(“cap cat ”) s3.replace(3,1, “,”) 在s3中从3下标开始向后长度为1的串换成 “,”字符串. 此刻s3为 “cap,cat ” s3.replace(3,4, “xxxx; ;yyy”, 4, 2) 在s3中从3下标开始向后长度为4的串换成 “xxxx; ;yyy”中从4下标开始长度为2的字符串. 此刻s3为 “cap;”,21,String的查找,替换,插入,String s1(“cat”), s2(“cap”), s3(“cap cat ”) s3.insert(4, “car”) 在s3中4下标开始处插入 “car, 结果s3为 “cap car cat ” s3.insert(4, “carpenter”, 4, string:npos) 在s3中4下标开始处插入 “carpenter”从4下标开始到尾部的子串,22,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,23,String到 char *的转换,String 是一个类, 不需要以 null终止, 有其属性length指示其有效元素的多少 Char * 是一个字符指针, 可以指向一个字符串, 代表了一个字符串首字符占据的地址. 无额外的终止标志,因此必须加null终止 string s(“hello”); const char * str = s.c_str() 此时: s: “hello”, str: “hello”,24,第4章 String类与字符串流处理,C+标准库中的String类 String的特性 String的构造函数, 求属性函数 String的赋值,连接,比较,子串,交换 String的查找,替换,插入 String到 char *的转换 String迭代器,25,String迭代器,String 提供了向前和向后遍历的迭代器 迭代器类似于指针 迭代器不检查范围 string:const_iterator i1; 声明i1为指向string的迭代器, 通过它可以读取元素, 但不能修改元素 string:iterator i1; 声明i1为指向string的迭代器, 通过它可以读取元素, 也能修改元素,26,String迭代器,#include #include usin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论