C++字符串部分讲解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C++程序设计—字符串字符串C++提供两种字符串形式,一种就是以'\0'作结束标志的字符数组,称为C字符串;另一种是string类,是使用更方便的标准字符串。1.空字符'\0'注意与空格字符''的区别,'\0'是C字符串在字符数组中保存的一个特殊的符号,没有这个符号的字符数组,就不是C字符串,而只能是一个字符数组。2.C字符串的定义与初始化定义一个能保存4个字符的C字符串cs如下:charcs[5];要给cs赋值为“abcd,可使用以下方法:strcpy(cs,abcd);或是在定义的同时赋值:charcs[5]=abcd;acs‘a’‘b’‘c’‘d’‘\0’cs[0]cs[1]cs[2]cs[3]cs[4]用字符数组存储和处理字符串字符串常量(例:program)各字符连续、顺序存放,每个字符占一个字节,以‘\0’结尾,相当于一个隐含创建的字符常量数组“program”出现在表达式中,表示这一char数组的首地址首地址可以赋给char常量指针:constchar*STRING1=program;字符串变量可以显式创建字符数组来表示字符串变量,例如,以下三条语句具有等价的作用:charstr[8]={'p','r','o','g','r','a','m','\0'};charstr[8]=program;charstr[]=program;4字符串案例一编写一个函数,自变量为字符串,函数值为该字符串中字母的个数;在主程序中实现输入输出。【分析】字符数组的输入输出可以有两种方法:(1)逐个字符输入输出(2)将整个字符串一次输入或输出。例如有以下程序段:charstr[20];cinstr;//用字符数组名输入字符串coutstr;//用字符数组名输出字符串输出时,逐个输出字符直到遇结束符′\0′,就停止输出。#includeiostreamusingnamespacestd;intcount(chara[100])//字符数组做函数参数{inti=0,c=0;while(a[i]!='\0'){if(a[i]='A'&&a[i]='Z'||a[i]='a'&&a[i]='z')c++;i++;}returnc;}intmain(){chartext[100];//定义字符数组cout请输入一个字符串:\n;cintext;cout你输入的字符串是:\n;couttextendl;cout字母个数=count(text)endl;system(PAUSE);return0;}用cin的操作符输入字符串,会以空格作为分隔符,空格后的内容会在下一回输入时被读取gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加‘\0’字符。其调用格式为:gets(s);其中s为字符串变量(字符串数组名或字符串指针)#includeiostreamusingnamespacestd;intcount(char*s){intc=0,i=0;while(*s!='\0'){if(*s='A'&&*s='Z'||*s='a'&&*s='z')c++;s++;}returnc;}intmain(){chartext[100];cout请输入一个字符串:\n;gets(text);cout字母个数=count(text)endl;system(PAUSE);return0;}用字符数组表示字符串的缺点用字符数组表示字符串的缺点执行连接、拷贝、比较等操作,都需要显式调用库函数,很麻烦当字符串长度很不确定时,需要用new动态创建字符数组,最后要用delete释放,很繁琐字符串实际长度大于为它分配的空间时,会产生数组下标越界的错误解决方法使用字符串类string表示字符串string实际上是对字符数组操作的封装9字符串【知识点】用字符数组来存放字符串并不是最理想和最安全的方法,C++提供了一种新的数据类型——字符串类型(string类型)。定义字符串变量:stringstring1;//定义string1为字符串变量stringstring2=″China″;//定义string2同时对其初始化要使用string类的功能时,必须添加#includestring字符串变量的输入输出cinstring1;//从键盘输入一个字符串给字符串变量coutstring2;//将字符串string2输出#includestringintcount(stringa)//字符串做参数{intc=0;inti=0;while(ia.length()){if(a[i]='A'&&a[i]='Z'||a[i]='a'&&a[i]='z')c++;i++;}returnc;}intmain(){stringtext;//定义字符串cout请输入一个字符串:\n;cintext;//字符串输入cout你输入的字符串是:\n;couttextendl;cout字母个数=count(text)endl;system(PAUSE);return0;}string类的成员函数及运算符假定定义:stringstr,str1,str2;intpos,len;则有以下函数可以使用:(1)取子字符串:str.substr(pos,len)(2)求串长:str.length()(3)判串空:str.empty()(4)插入子串:str.insert(pos,str2)(5)删除字串:str.remove(pos,len)(6)查找字串:str.find(str1)(7)定位查找字串:str.find(str1,pos)(8)定位查找串中字符:str.find_first_of(str1,pos)(9)查找不属于:str.find_first_not_of(str1,pos)(10)赋值、连接、比较等运算符号化:=、+、==、、、=、=、!=string的用法(2)常用操作符s+t将串s和t连接成一个新串s=t用t更新ss==t判断s与t是否相等s!=t判断s与t是否不等st判断s是否小于t(按字典顺序比较)s=t判断s是否小于或等于t(按字典顺序比较)st判断s是否大于t(按字典顺序比较)s=t判断s是否大于或等于t(按字典顺序比较)s[i]访问串中下标为i的字符例:strings1=“abc”,s2=“def”;strings3=s1+s2;//结果是”abcdef”bools4=(s1s2);//结果是truechars5=s2[1];//结果是’e’13字符串用getline输入整行字符串输入整行字符串用string头文件中的getline可以输入整行字符串,例如:getline(cin,s2);以其它字符作为分隔符输入字符串输入字符串时,可以使用其它分隔符作为字符串结束的标志(例如逗号、分号)把分隔符作为getline的第3个参数即可,例如:getline(cin,s2,',');14字符串#includestringintcount(stringa)//字符串做参数{intc=0;inti=0;while(ia.length()){if(a[i]='A'&&a[i]='Z'||a[i]='a'&&a[i]='z')c++;i++;}returnc;}intmain(){stringtext;cout请输入一个字符串:\n;getline(cin,text);//允许字符串中含空格cout你输入的字符串是:\n;couttextendl;cout字母个数=count(text)endl;system(PAUSE);return0;}用getline输入字符串16includeiostream#includestringusingnamespacestd;intmain(){for(inti=0;i2;i++){stringcity,state;getline(cin,city,',');getline(cin,state);coutCity:city“State:stateendl;}return0;}字符串Beijing,ChinaCity:BeijingState:ChinaSanFrancisco,theUnitedStatesCity:SanFranciscoState:theUnitedStates字符串数组不仅可以用string定义字符串变量,还可以定义字符串数组#includeiostream#includestringusingnamespacestd;intmain(){//stringname[5]={zhang,wang,li,zhao,liu};stringnames[5];for(inti=0;i5;i++){getline(cin,names[i]);}for(inti=0;i5;i++){coutnames[i]'\t';}system(PAUSE);return0;}

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功