第二章 string对象
第二章 从结构到类的演变
使用string对象
类名 string 属性 str 操作: string() 构造ห้องสมุดไป่ตู้数 find() 查找函数 size() 求长度函数 substr() 求字串函数
使用string类必须包 含头文件 #include<string> 初始化: string str=“A”; // string str=‘A’;
#include<iostream> #include<string> using namespace std; void main() { string str1(“We are here!”); string str2=“where are you?”; cout<<str1[0]<<str1[11]<<“,”<<str1<<endl; cout<<str2[0]<<str2[13]<<“,”<<str2<<endl; cout<<“str1 length is”<<str1.size(); cout<<“str2 length is”<<str2.size(); }
验证 例2.10
String对象数组和泛型算法
泛型算法同样适用于 string类 String对象之间可以 直接赋值。 不要将string类本身 的find成员函数和泛 型算法中的find函数 混淆。
#include<iostream> #include<string> #include<algorithm> void main() { string str1=“we are here!”,str2=str1; reverse(&str1[0],&str1[0]+12); cout <<str1<<endl; copy(&str1[0],&str1[0]+12,&str2[0]); cout<<str2<<endl; }
String类有一对用于指示其元素位置的基本成 员函数: 指示第一元素的begin 指示最后一个元素之后的字符结束标志end 如果当前begin不等于end,算法先作用于 begin所指元素,并将begin前进一个位置,然 后作用于当前begin所指元素,如此进行。 验证例题2.12
练习
P48 三、编程题
对象名称.substr(参数1,参数2) 参数1:要截取子串在字符串中的位置 参数2:截取的长度 例:string str1=“we are here!”; string newstr1=str1.substr(3,3); string newstr2=newstr1.substr(2,8);
对象名称.find(要查找的字符串,开始查 找的位置); 返回要查找的字符串在主串中的位置。 例:string str1=“we are here!” int i=str1.find(“are”,0);
例如:日期格式转换
例:将美国日期May 28 , 2002转换国际格 式28 May 2002 解 string Date=“May 28 , 2002”; (1)寻找月份 i=Date.find(“ ”,0); string month=Date.substr(0,i); (2)寻找日子 K=Date.find(“,”,i+1); string day=Date.substr(i+1,k-(i+1)); (3)寻找年 string year=Date.substr(K+2,4); (4)按照新格式进行拼装
上机验证例题2.9
使用complex对象
必须包含头文件 #include<complex> Complex类是一个模板类,可以定义 多种数据类型的复数。 定义格式:
complex<数据类型>对象名(实部值,虚部值); 例 complex<int>num1(2,3); complex<double>num2(3.5,4.5); complex的real和imag成员函数可以输出复数对 象的实部和虚部的值。 例 cout<<num1.real( )<<num1.imag ( )<<endl;