




已阅读5页,还剩87页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Copyright2008PearsonAddison-Wesley.Allrightsreserved.,Chapter8,StringsandVectors,Slide8-3,Overview,8.1AnArrayTypeforStrings8.2TheStandardstringClass8.3Vectors,Copyright2008PearsonAddison-Wesley.Allrightsreserved.,8.1,AnArrayTypeforStrings,Slide8-5,AnArrayTypeforStrings,C-stringscanbeusedtorepresentstringsofcharactersC-stringsarestoredasarraysofcharactersC-stringsusethenullcharacter0toendastringTheNullcharacterisasinglecharacterTodeclareaC-stringvariable,declareanarrayofcharacters:chars11;,Slide8-6,DeclaringaC-stringaschars10createsspaceforonlyninecharactersThenullcharacterterminatorrequiresonespaceAC-stringvariabledoesnotneedasizevariableThenullcharacterimmediatelyfollowsthelastcharacterofthestringExample:,C-stringDetails,Slide8-7,C-stringDeclaration,TodeclareaC-stringvariable,usethesyntax:charArray_nameMaximum_C_String_Size+1;+1reservestheadditionalcharacterneededby0,Slide8-8,InitializingaC-string,ToinitializeaC-stringduringdeclaration:charmy_message20=Hithere.;Thenullcharacter0isaddedforyouAnotheralternative:charshort_string=abc;butnotthis:charshort_string=a,b,c;,Slide8-9,C-stringerror,ThisattempttoinitializeaC-stringdoesnotcausethe0tobeinsertedinthearraycharshort_string=a,b,c;,Slide8-10,DontChange0,DonottoreplacethenullcharacterwhenmanipulatingindexedvariablesinaC-stringIfthenullcharacterislost,thearraycannotactlikeaC-stringExample:intindex=0;while(our_stringindex!=0)our_stringindex=X;index+;Thiscodedependsonfindingthenullcharacter!,Slide8-11,SaferProcessingofC-strings,Thelooponthepreviousslidedependedonfindingthe0characterItwouldbewisertousethisversionincasethe0characterhadbeenremovedintindex=0;while(our_stringindex!=0,Slide8-12,AssignmentWithC-strings,Thisstatementisillegal:a_string=Hello;Thisisanassignmentstatement,notaninitializationTheassignmentoperatordoesnotworkwithC-strings,Slide8-13,AssignmentofC-strings,AcommonmethodtoassignavaluetoaC-stringvariableistousestrcpy,definedinthecstringlibraryExample:#includechara_string11;strcpy(a_string,Hello);PlacesHellofollowedbythenullcharacterina_string,Slide8-14,AProblemWithstrcpy,strcpycancreateproblemsifnotusedcarefullystrcpydoesnotcheckthedeclaredlengthofthefirstargumentItispossibleforstrcpytowritecharactersbeyondthedeclaredsizeofthearray,Slide8-15,ASolutionforstrcpy,ManyversionsofC+haveasaferversionofstrcpynamedstrncpystrncpyusesathirdargumentrepresentingthemaximumnumberofcharacterstocopyExample:charanother_string10;strncpy(another_string,a_string_variable,9);Thiscodecopiesupto9charactersintoanother_string,leavingonespacefor0,Slide8-16,=AlternativeforC-strings,The=operatordoesnotworkasexpectedwithC-stringsThepredefinedfunctionstrcmpisusedtocompareC-stringvariablesExample:#includeif(strcmp(c_string1,c_string2)coutStringsarenotthesame.;elsecoutStringarethesame.;,Slide8-17,strcmpslogic,strcmpcomparesthenumericcodesofelementsintheC-stringsacharacteratatimeIfthetwoC-stringsarethesame,strcmpreturns00isinterpretedasfalseAssoonasthecharactersdonotmatchstrcmpreturnsanegativevalueifthenumericcodeinthefirstparameterislessstrcmpreturnsapositivevalueifthenumericcodeinthesecondparameterislessNon-zerovaluesareinterpretedastrue,Slide8-18,MoreC-stringFunctions,Thecstringlibraryincludesotherfunctionsstrlenreturnsthenumberofcharactersinastringintx=strlen(a_string);strcatconcatenatestwoC-stringsThesecondargumentisaddedtotheendofthefirstTheresultisplacedinthefirstargumentExample:charstring_var20=Therain;strcat(string_var,inSpain);Nowstring_varcontainsTheraininSpain,strncatisasaferversionofstrcatAthirdparameterspecifiesalimitforthenumberofcharacterstoconcatenateExample:charstring_var20=Therain;strncat(string_var,inSpain,11);,Slide8-19,Display8.1(1),Display8.1(2),ThestrncatFunction,Slide8-20,C-stringsasArgumentsandParameters,C-stringvariablesarearraysC-stringargumentsandparametersareusedjustlikearraysIfafunctionchangesthevalueofaC-stringparameter,itisbesttoincludeaparameterforthedeclaredsizeoftheC-stringIfafunctiondoesnotchangethevalueofaC-stringparameter,thenullcharactercandetecttheendofthestringandnosizeargumentisneeded,Slide8-21,C-stringOutput,C-stringscanbeoutputwiththeinsertionoperatorExample:charnews=C-strings;coutnewsWow.canfillaC-stringWhitespaceendsreadingofdataExample:chara80,b80;coutab;coutabEndofOutput;couldproduce:Enterinput:Dobedotoyou!DobeEndofOutput,Slide8-23,ReadinganEntireLine,Predefinedmemberfunctiongetlinecanreadanentireline,includingspacesgetlineisamemberofallinputstreamsgetlinehastwoargumentsThefirstisaC-stringvariabletoreceiveinputThesecondisaninteger,usuallythesizeofthefirstargumentspecifyingthemaximumnumberofelementsinthefirstargumentgetlineisallowedtofill,Slide8-24,Usinggetline,ThefollowingcodeisusedtoreadanentirelineincludingspacesintoasingleC-stringvariablechara80;coutEnterinput:n;cin.getline(a,80);coutac_string;in_stream.getline(c_string,80);Replacecoutwiththenameofanoutput-filestreamout_streams1;skipswhitespaceandstopsonencounteringmorewhitespace,Slide8-43,getlineandTypestring,AgetlinefunctionexiststoreadentirelinesintoastringvariableThisversionofgetlineisnotamemberoftheistreamclass,itisanon-memberfunctionSyntaxforusingthisgetlineisdifferentthanthatusedwithcin:cin.getline()Syntaxforusinggetlinewithstringobjects:getline(Istream_Object,String_Object);,Slide8-44,getlineExample,Thiscodedemonstratestheuseofgetlinewithstringobjectsstringline;coutEnteralineofinput:n;getline(cin,line);coutlineENDOFOUTPUTn;Outputcouldbe:Entersomeinput:Dobedotoyou!Dobedotoyou!ENDOFOUTPUT,TheextractionoperatorcannotbeusedtoreadablankcharacterToreadonecharacteratatimeremembertousecin.getcin.getreadsvaluesoftypechar,nottypestringTheuseofgetline,andcin.getforstringinputaredemonstratedin,Slide8-45,Display8.5(1),Display8.5(2),CharacterInputWithstrings,Slide8-46,AnotherVersionofgetline,Theversionsofgetlinewehaveseen,stopreadingattheendoflinemarkerngetlinecanstopreadingatacharacterspecifiedintheargumentlistThiscodestopsreadingwhena?isreadstringline;couts2;cins2;,returns,getlineReturnsaReference,Slide8-48,getlineDeclarations,Thesearethedeclarationsoftheversionsofgetlineforstringobjectswehaveseenistream,Slide8-49,Mixingcinandgetline,RecallcinnskipswhitespacetofindwhatitistoreadthenstopsreadingwhenwhitespaceisfoundcinleavesthencharacterintheinputstreamExample:intn;stringline;cinn;getline(cin,line);leavesthenwhichimmediatelyendsgetlinesreadinglineissetequaltotheemptystring,Slide8-50,ignore,ignoreisamemberoftheistreamclassignorecanbeusedtoreadanddiscardallthecharacters,includingnthatremaininalineIgnoretakestwoargumentsFirst,themaximumnumberofcharacterstodiscardSecond,thecharacterthatstopsreadinganddiscardingExample:cin.ignore(1000,n);readsupto1000charactersorton,ThestringclassallowsthesameoperationsweusedwithC-stringsandmoreCharactersinastringobjectcanbeaccessedasiftheyareinanarraylast_nameiprovidesaccesstoasinglecharacterasinanarrayIndexvaluesarenotcheckedforvalidity!,Slide8-51,Display8.6,StringProcessing,Slide8-52,MemberFunctionlength,Thestringclassmemberfunctionlengthreturnsthenumberofcharactersinthestringobject:Example:intn=string_var.length();,atisanalternativetousingstoaccesscharactersinastring.atchecksforvalidindexvaluesExample:stringstr(Mary);coutstr6endl;coutstr.at(6)endl;str2=X;str.at(2)=X;,Slide8-53,Otherstringclassfunctionsarefoundin,Display8.7,MemberFunctionat,Slide8-54,Comparisonofstrings,ComparisonoperatorsworkwithstringobjectsObjectsarecomparedusinglexicographicorder(AlphabeticalorderingusingtheorderofsymbolsintheASCIIcharacterset.)=returnstrueiftwostringobjectscontainthesamecharactersinthesameorderRememberstrcmpforC-strings?,=canbeusedtocomparestringobjects,Slide8-55,ProgramExample:PalindromeTesting,ApalindromeisastringthatreadsthesamefromfronttobackasitdoesfrombacktofrontThisprogramignoresspacesandpunctuationUpperandlowercaseversionsoflettersareconsideredthesameletterExamples:AblewasIereIsawElba.Madam,ImAdam.Aman,aplan,acanal,Panama.Racecar,Slide8-56,PalindromeTesting:remove_punct,remove_punctremovespunctuationfromastringremove_punctcompareseachcharacterinthestringtothecharactersinastringcontainingallthepunctuationcharactersandthespacecharacter.Ifamatchisnotfound,thecharacterisaddedtothestringno_punctno_punct,theoriginalstringlessanypunctuationorspaces,isreturned,Slide8-57,PalindromeTesting:substr,Thesubstrmemberfunctionisusedtolocateasubstringwithinastringremove_punctusessubstrtoextractasinglecharacteratatimefromthesourcestring.Thecharacterisstoredina_char.remove_punctthenusesfunctionfindtoseeifthecharacterina_charisinthestringofpunctuationcharacters,Theentirepalindrometestingprogramisfoundin,Slide8-58,PalindromeTesting:TheProgram,Slide8-59,stringObjectstoC-strings,RecalltheautomaticconversionfromC-stringtostring:chara_c_string=C-string;string_variable=a_c_string;stringsarenotconvertedtoC-stringsBothofthesestatementsareillegal:a_c_string=string_variable;strcpy(a_c_string,string_variable);,Slide8-60,ConvertingstringstoC-strings,Thestringclassmemberfunctionc_strreturnstheC-stringversionofastringobjectExample:strcpy(a_c_string,string_variable.c_str();Thislineisstillillegala_c_string=string_variable.c_str();Recallthatoperator=doesnotworkwithC-strings,Slide8-61,Section8.2Conclusion,CanyouShowhowastringobjectcanbeusedlikeaC-string?Writecodetoreadanentirelineintoastringobject?Usethestringfunctionattoaccessindividualcharactersinastringobject?WritecodetoconvertastringtoaC-string?,Copyright2008PearsonAddison-Wesley.Allrightsreserved.,8.3,Vectors,Slide8-63,Vectors,VectorsarelikearraysthatcanchangesizeasyourprogramrunsVectors,likearrays,haveabasetypeTodeclareanemptyvectorwithbasetypeint:vectorv;identifiesvectorasatemplateclassYoucanuseanybasetypeinatemplateclass:vectorv;,Slide8-64,AccessingvectorElements,Vectorselementsareindexedstartingwith0sareusedtoreadorchangethevalueofanitem:vi=42;coutvi;scannotbeusedtoinitializeavectorelement,Slide8-65,InitializingvectorElements,Elementsareaddedtoavectorusingthememberfunctionpush_backpush_backaddsanelementinthenextavailablepositionExample:vectorsample;sample.push_back(0.0);sample.push_back(1.1);sample.push_back(2.2);,Slide8-66,ThesizeOfAvector,ThememberfunctionsizereturnsthenumberofelementsinavectorExample:Toprinteachelementofavectorgiventhepreviousvectorinitialization:for(inti=0;isample.size();i+)coutsampleiendl;,Slide8-67,TheTypeunsignedint,ThevectorclassmemberfunctionsizereturnsanunsignedintUnsignedintsarenonnegativeintegersSomecompilerswillgiveawarningifthepreviousfor-loopisnotchangedto:for(unsignedinti=0;isample.size();i+)coutsampleiendl;,Slide8-68,AlternatevectorInitialization,AvectorconstructorexiststhattakesanintegerargumentandinitializesthatnumberofelementsExample:vectorv(10);initializesthefirst10elementsto0v.size()wouldreturn10scannowbeusedtoassignelements0through9push_backisusedtoassignelementsgreaterthan9,Slide8-69,VectorInitializationWithClasses,ThevectorconstructorwithanintegerargumentInitializeselementsofnumbertypestozeroInitializeselementsofclasstypesusingthedefaultconstructorfortheclass,TousethevectorclassIncludethevectorlibrary#includeVectornamesareplacedinthestandardnamespacesotheusualusingdirectiveisneeded:usingnamespacestd;,Slide8-70,Display8.9,ThevectorLibrary,Slide8-71,vectorIssues,AttemptingtousetosetavaluebeyondthesizeofavectormaynotgenerateanerrorTheprogramwillprobablymisbehaveTheassignmentoperatorwithvectorsdoesanelementbyelementcopyoftherighthandvectorForclasstypes,theassignmentoperatormustmakeindependentcopies,Slide8-72,vectorEfficiency,Avectorscap
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高考物理“状态判断”准确识别试题
- 工业测试考试题及答案
- 职员守秘合同及信息保护承诺函7篇范文
- 高考试题地理分类及答案
- 供应链合作伙伴评估指标模板
- 高等选矿学考试题及答案
- 指南语言领域试卷及答案
- 九绵高速公路模拟考试题及答案
- 公司冷藏品运输合同5篇
- 2025年中考语文陕西试卷及答案
- 人机工程学-人体感受系统-课件
- 乡村振兴汇报模板
- 津16D19 天津市住宅区及住宅建筑内光纤到户通信设施标准设计图集 DBJT29-205-2016
- 心肺复苏(CPR)培训考核试题及答案
- 开展健康生活方式、营养和慢性病预防知识教育和宣传活动
- 高分子物理-第2章-聚合物的凝聚态结构课件
- CNAS体系基础知识培训课件
- 特种设备制造内审及管理评审资料汇编经典版
- 河蟹健康养殖与常见疾病防治技术课件
- 小学二年级《爱国主义教育》主题班会课件
- 儿童牙外伤讲稿
评论
0/150
提交评论