1、C+程序设计基础第20讲(习题课二)4.7 string类vC+标准库中定义了一个string类,封装了字符串的基本特性和对字符串的各种典型操作。vstring在string.h只能够声明,并要使用名空间std。C+程序设计基础第20讲(习题课二)4.7 string类v4.7.1 string类的属性v4.7.2 string类的操作C+程序设计基础第20讲(习题课二)4.7 string类v4.7.1 string类的属性类的属性l串长(length或size):表示string对象中存放的字符数。l容量(capacity):表示string对象不必增加内存可存放的字符个数。l最大长度(m
2、aximum size):表示string对象允许的最大长度。l以上3个属性通过string类的成员函数获得:lsize_type string:length()const;/返回串长lsize_type string:size()const;/返回串长lsize_type string:capacity()const;/返回容量lsize_type string:max_size()const;/返回最大串长C+程序设计基础第20讲(习题课二)【课堂示例(一)】v例4-33 测试string对象的特性。#include#include using namespace std;void Pri
3、ntAttribute(const string&str);void main()string s1,s2;PrintAttribute(s1);s1=My string object;PrintAttribute(s1);s2=new string;PrintAttribute(s2);void PrintAttribute(const string&str)coutsize:str.size()endl;coutlength:str.length()endl;coutcapacity:str.capacity()endl;coutmax_size:str.max_size()endl;CA
4、SE1:eg4_33.cppC+程序设计基础第20讲(习题课二)4.7 string类v4.7.2 string类的操作类的操作1.赋值与连接l赋值:lstring&assign(const string&str);lstring&operator=(const string&str);l连接:lstring&append(const string&str);lstring&operator+=(const string&str);l举例:CASE2:eg4_34.cpp2.比较string对象lint compare(const string&str)const;lint compare(s
5、ize_type p0,size_type n0,const string&str,size_type pos,size_type n);C+程序设计基础第20讲(习题课二)4.7 string类v4.7.2 string类的操作类的操作3.交换string对象lvoid swap(string&str);4.求子串lstring substr(size_type pos=0,size_type n=npos)const;5.查找子串lsize_type find(const string&str,size_type pos=0)const;l举例:string s1=“C+program d
6、esign”;int postion=s1.find(“program”,0);/postion=46.串替换lstring&replace(size_type p0,size_type n0,const string&str);C+程序设计基础第20讲(习题课二)4.7 string类v4.7.2 string类的操作类的操作7.插入串lstring&insert(size_type p0,const string&str);l举例:CASE3:insertTest.cpp8.输入一行字符lgetline(istream&in,string str,char ch);9.转换成C语言式的ch
7、ar*字符串C+程序设计基础第20讲(习题课二)【第5章回顾】1.结构类型结构类型用关键字struct定义,是由不同类型数据组成的数据类型。2.链表链表是一种重要的动态数据结构,可以在程序运行时创建或撤消数据元素。3.类类通常用关键字class定义。类是数据成员和成员函数的封装。类的实例称为对象。4.类成员由private,protected,public决定访问特性。构造函数构造函数在创建和初始化对象时自动调用,析构函数析构函数则在对象作用域结束时自动调用。5.重载构造函数重载构造函数和复制构造函数复制构造函数提供了创建对象的不同初始化方式。6.静态成员静态成员是局部于类的成员,提供一种同类
8、对象的共享机制。7.友员友员用关键字friend声明。友员是对类操作的一种辅助手段,一个类的友员可以访问该类各种性质的成员。C+程序设计基础第20讲(习题课二)【习题】vP228:5.2(2)考察点:结构exercise5_2_2.cppvP228:5.2(3)考察点:链表exercise5_2_3.cppvP228:5.2(4)考察点:类、对象、访问对象exercise5_2_4.cppvP229:5.2(5)考察点:构造函数、析构函数、重载构造函数exercise5_2_5.cppvP229:5.2(6)考察点:静态数据成员、静态成员函数exercise5_2_6.cppvP230:5.2
9、(8)考察点:友元函数、友元类exercise5_2_8.cppC+程序设计基础第20讲(习题课二)【课堂练习】v(补充)编写一程序,设计一个栈操作类,包含入栈和出栈成员函数,然后入栈一组数据,出栈并显示出栈顺序。CASE4:stackTest.cppC+程序设计基础第20讲(习题课二)【课堂练习】v(补充)设计一程序,其中有3个类,CBank、ICBank和ABank,分别为中国银行类、工商银行类和农业银行类,每个类都包含有一个私有数据balance,用于存放储户在该银行的存款数,另有一个友元函数total用于计算储户在这3家银行中的总存款数。CASE5:friendTest.cppC+程序设计基础第20讲(习题课二)【期中试卷评测】v2007-2008学年度第一学期C+期中考试试卷(含答案).doc