




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
回顾静态绑定和动态绑定的概念多态性的意义和作用虚函数的定义方法抽象基类的作用和定义方法虚析构函数的作用和使用方法如何在程序中实现多态性1目标string类型的介绍string的输入和输出string的成员函数vector类型的介绍vector类型的构造函数2标准库string类型string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作typedefbasic_string<char>string;typedefbasic_string<wchar_t>wstring;要使用string类型对象,必须包含相关头文件#include<string>usingnamespacestd::string;3string对象的定义和初始化strings1; //默认构造函数,s1为空串strings2(s1); //将s2初始化为s1的一个副本strings3(“value”); //将s3初始化为一个字符串字面值副本strings4(n,‘c’); //将s4初始化为字符‘c’的n个副本字符串常量与标准库string类型不是同一种类型4string对象的读写使用用cin的“>>”提取运算符进行读操作,使用cout的“<<”输入运算符进行输出操作5#include<iostrem>#include<string>usingnamespacestd;voidmain(){ stringstr; cout<<“inputyourname:” ; cin>>str; cout<<“yournameis”<<str<<endl;}用getline读取整行文本2-1(嵌入式里面很少用)函数功能:从输入流的读取一行,并保存读取的内容到string对象中,但不包括换行符函数原型:template<class_E,class_TYPE,class_A>inlinebasic_istream<_E,_TYPE>&getline( basic_istream<_E,_TYPE>&Istream, basic_string<_E,_TYPE,_A>&Xstring, const_E_D=_TYPE::newline());函数参数:1输入流对象;2string对象;3结束符函数返回值:输入流对象6用getline读取整行文本2-2#include<string>#include<iostream>usingnamespacestd;voidmain(){ strings1; cout<<"Enterasentence(use<space>asthedelimiter):"; getline(cin,s1,''); cout<<"Youentered:"<<s1;}7常用的成员函数2-1成员函数功能描述size()得到字符串的大小length()同上empty()判断是否为空substr()截取字符串find()在字符串中查找字符或者字符串replace()替代compare()比较字符串insert()插入字符append()追加字符rfind()反向查找swap()交换字符串重载运算符[],+=,=,+,>,<,>=,<=,!=,==,>>,<<等8常用的成员函数2-2#include<string>#include<iostream>usingnamespacestd;voidmain(){ stringstrinfo="//*---HelloWord!......------";strset="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; intfirst=strinfo.find_first_of(strset); if(first==string::npos) cout<<"notfindanycharacters"<<endl; intlast=strinfo.find_last_of(strset); if(last==string::npos) cout<<"notfindanycharacters"<<endl; cout<<strinfo.substr(first,last-first+1)<<endl;}9string::size_type类型2-1string类类型和许多其他库类型都定义了一些配套类型(companiontype)通过这些配套类型,库类型的使用就能与机器无关(machine-independent)与unsigned型(unsignedint或unsignedlong)具有相同的含义,可以保证足够大能够存储任意string对象的长度成员函数中很多参数或者返回值都是string::size_type类型10string::size_type类型2-2#include<iostream>#include<string>usingnamespacestd;voidfun(conststringstr){ if(str.empty()){ //str.size()==0 return;// } string::size_typelen=str.size(); cout<<"Thesizeof"<<str<<"is"<<len<<endl;}voidmain(){ stringstr("Theexpenseofspirit\n"); fun(str);}11string的关系运算符2-1string类重载了关系运算符关系操作符用来比较两个string值的大小string对象比较操作是区分大小写的==操作符来测试两个string对象是否相等两个string对象相等是指它们的长度相同,且含有相同的字符!=操作符来测试两个string对象是否不等关系操作符<,<=,>,>=分别用于测试一个string对象是否小于、小于或等于、大于、大于或等于另一个string对象12string的关系运算符2-2#include<iostream>#include<string>usingnamespacestd;voidmain(){ stringbig="big",small="small"; strings1=big; if(big>small) cout<<“big>small”; if(big==s1) cout<<“big==s1”;}13string对象的赋值可以把一个string对象赋值给另一个string对象例如:stringst1,st2="Theexpenseofspirit";st1=st2;赋值操作后,st1就包含了st2串所有字符的一个副本先把st1占用的相关内存释放掉,然后再分配给st1足够存放st2副本的内存空间,最后把st2中的所有字符复制到新分配的内存空间14两个string对象相加string对象的加法被定义为连接concatenation通过使用加操作符+或者复合赋值操作符+=例如:strings1(“hello,”),s2("world\n");strings3=s1+s2;s1+=s2;和字符串常量的连接时,+操作符的左右操作数必须至少有一个是string类型例如:s3=s1+“,”; //正确s3=“hello”+“,”; //错误s3=s1+“,”+“world”; //正确s3=“hello”+“,”+s2; //错误15从string对象获取字符string类型通过下标操作符([])来访问string对象中的单个字符下标操作符需要取一个size_type类型的值使用方式和字符数组类似16#include<string>#include<iostream>usingnamespacestd;voidmain(){ stringstr("somestring"); for(string::size_typeix=0;ix!=str.size();++ix) cout<<str[ix]<<endl;}标准库的vector类型vector是同一种类型的对象的集合vector的数据结构很像数组,能非常高效和方便地访问单个元素vector是一个类模板(classtemplate)要使用vector必须包含相关头文件#include<vector>usingstd::vector;17vector的定义vector保存何种对象的类型,通过将类型放在类模板名称后面的尖括号中来指定类型vector的定义语法:vector<类型名>对象名称;例如:vector<int>ivec; vector<Sales_item>Sales_vec;18vector对象的初始化vector类定义了好几种构造函数vector<T>v1;
//vector保存类型为T的对象。默认构造函数v1为空vector<T>v2(v1);//v2是v1的一个副本vector<T>v3(n,i);//v3包含n个值为i的元素vector<T>v4(n);
//v4含有值初始化的元素的n个副本19vector元素值的初始化如果没有指定元素的初始化式,那么标准库将自行提供一个元素初始值进行值初始化(valueinitializationd)。初始值将用来初始化容器中的每个元素,具体取决于存储在vector中元素的数据类型例如: vector<int>fvec(10);//10个int元素,初始化为0如果vector保存的是含有构造函数的类类型(如string)的元素,标准库将用该类型的默认构造函数创建元素初始值例如: vector<string>svec(10);//10个string元素,初始化为NULL20vector成员函数vector标准库提供了许多类似于string对象的操作成员函数功能描述size()返回元素的个数clear()清除所有元素empty()判断是否为空push_back()在末尾添加一个元素pop_back()删除最后一个元素erase()删除某个元素insert()插入一个元素[]返回元素=复制副本重载运算符[],=,>,<,>=,<=,!=,==等21vector使用#include<string>#include<vector>#include<iostream>usingnamespa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国锂电池正极材料市场发展趋势及投资战略研究报告
- 2025-2030年中国铝冶炼行业运行动态与前景趋势分析报告
- 2025-2030年中国菱镁矿产业竞争格局与十三五规划研究报告
- 2025-2030年中国联苯双酯行业市场运行状况与十三五规划分析报告
- 2025-2030年中国粘玉米行业规模分析及发展建议研究报告
- 2025-2030年中国空管系统市场十三五规划与投资战略研究报告
- 2025-2030年中国畜禽养殖中抗生素行业发展状况及投资战略研究报告
- 东北财经大学《中医护理学基础》2023-2024学年第二学期期末试卷
- 广东江门幼儿师范高等专科学校《面向对象与可视化编程》2023-2024学年第二学期期末试卷
- 广州工商学院《健康服务与营销学》2023-2024学年第二学期期末试卷
- 酒店宾客意见表
- 一年级语文《端午粽》说课课件
- NB/T 11261-2023煤矿冻结孔施工及质量验收规范
- 《铸造用增碳剂》
- 婴幼儿伤害预防与处理配套教材电子课件(完整版)
- 线下庭审申请书
- 萃取技术 多级逆流萃取
- 部编版小学五年级语文教材培训课件【部编】
- 盆景造型经验
- 2023年广东省佛山市顺德区小升初数学试卷(含答案)
- 威风堂堂进行曲
评论
0/150
提交评论