CString成员函数详解

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

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

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

资源描述

CString类所有成员函数详解VC里CString是我们最常用的类之一,我们觉得对它很熟悉了,可是你知道它的所有用法吗?还是系统的学习一下吧,认真看完本文就OK了。下面开始:CString::CompareintCompare(LPCTSTRlpsz)const;返回值字符串一样返回0小于lpsz返回-1大于lpsz返回1区分大小字符CStrings1(abc);CStrings2(abd);ASSERT(s1.Compare(s2)==-1);ASSERT(s1.Compare(abe)==-1);CString::CompareNoCaseintCompareNoCase(LPCTSTRlpsz)const;返回值字符串一样返回0小于lpsz返回-1大于lpsz返回1不区分大小字符CString::CollateintCollate(LPCTSTRlpsz)const;同CString::CompareCString::CollateNoCaseintCollateNocase(LPCTSTRlpsz)const;同CString::CompareNoCaseCString::CStringCString();CString(constCString&stringSrc);CString(TCHARch,intnRepeat=1);CString(LPCTSTRlpch,intnLength);CString(constunsignedchar*psz);CString(LPCWSTRlpsz);CString(LPCSTRlpsz);例子最容易说明问题CStrings1;CStrings2(cat);CStrings3=s2;CStrings4(s2++s3);CStrings5('x');//s5=xCStrings6('x',6);//s6=xxxxxxCStrings7((LPCSTR)ID_FILE_NEW);//s7=CreateanewdocumentCStringcity=Philadelphia;CString::DeleteintDelete(intnIndex,intnCount=1);返回值是被删除前的字符串的长度nIndex是第一个被删除的字符,nCount是一次删除几个字符。根据我实验得出的结果:当nCount要删除字符串的最大长度(GetCount()-nIndex)时会出错,当nCount过大,没有足够的字符删除时,此函数不执行。例子CStringstr1,str2,str3;chara;str1=nihao;str2=nIhao;intx;//inti=(str1==str2);str1.Delete(2,3);如果nCount(3)GetCount()–nIndex(5-2)就会执行错误CString::EmptyVoidEmpty();没有返回值清空操作;例子CStrings(abc);s.Empty();ASSERT(s.GetLength()==0);CString::FindintFind(TCHARch)const;intFind(LPCTSTRlpszSub)const;intFind(TCHARch,intnStart)const;intFind(LPCTSTRlpszSub,intnStart)const;返回值不匹配的话返回-1;索引以0开始nStar代表以索引值nStart的字符开始搜索,即为包含以索引nStart字符后的字符串例子CStrings(abcdef);ASSERT(s.Find('c')==2);ASSERT(s.Find(de)==3);Cstringstr(“Thestarsarealigned”);Ingn=str.Find('e',5);ASSERT(n==12)CString::FindOneOfintFindOneOf(LPCTSTRlpszCharSet)const;返回值不匹配的话返回-1;索引以0开始注意::返回此字符串中第一个在lpszCharSet中也包括字符并且从零开始的索引值例子CStrings(abcdef);ASSERT(s.FindOneOf(xd)==3);//'d'isfirstmatch.CString::FormatvoidFormat(LPCTSTRlpszFormat,...);voidFormat(UINTnFormatID,...);lpszFormat一个格式控制字符串nFormatID字符串标识符例子CStringstr;Str.Format(“%d”,13);此时Str为13CString::GetAtTCHARGetAt(intnIndex)const;返回标号为nIndex的字符,你可以把字符串理解为一个数组,GetAt类似于[].注意nIndex的范围,如果不合适会有调试错误。CString::GetBufferLPTSTRGetBuffer(intnMinBufLength);返回值一个指向对象的(以空字符结尾的)字符缓冲区的LPTSTR指针。参数nMinBufLength字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。说明此成员函数返回一个指向CString对象的内部字符缓冲区的指针。返回的LPTSTR不是const,因此可以允许直接修改CString的内容。如果你使用由GetBuffer返回的指针来改变字符串的内容,你必须在使用其它的CString成员函数之前调用ReleaseBuffer函数。在调用ReleaseBuffer之后,由GetBuffer返回的地址也许就无效了,因为其它的CString操作可能会导致CString缓冲区被重新分配。如果你没有改变此CString的长度,则缓冲区不会被重新分配。当此CString对象被销毁时,其缓冲区内存将被自动释放。注意,如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用ReleaseBuffer来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给ReleaseBuffer的长度参数传递-1,ReleaseBuffer将对该缓冲区执行strlen来确定它的长度。下面的例子说明了如何用CString::GetBuffer。//CString::GetBuffer例子CStrings(abcd);#ifdef_DEBUGafxDumpCStringss\n;#endifLPTSTRp=s.GetBuffer(10);strcpy(p,Hello);//直接访问CString对象。s.ReleaseBuffer();#ifdef_DEBUGafxDumpCStringss\n;#endifCString::GetLengthintGetLength()const;返回值返回字符串中的字节计数。说明此成员函数用来获取这个CString对象中的字节计数。这个计数不包括结尾的空字符。对于多字节字符集(MBCS),GetLength按每一个8位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。示例下面的例子说明了如何使用CString::GetLength。//CString::GetLength示例CStrings(abcdef);ASSERT(s.GetLength()==6);CString::InsertintInsert(intnIndex,TCHARch);intInsert(intnIndex,LPCTSTRpstr);返回修改后的长度,nIndex是字符(或字符串)插入后的索引号例子CStringstr(“HockeyBest”);intn=str.Insert(6,“is”);ASSERT(n==str.GetLength());printf(“1:%s\n”,(LPCTSTR)str);n=str.Insert(6,'');ASSERT(n==str.GetLength());printf(“2:%s\n”,(LPCTSTR)STR);n=str.Insert(555,‘1’);ASSERT(n==str.GetLength());printf(“3:%s\n”,(LPCTSTR)str);输出1.HockeyisBest2.HockeyisBest3.HockeyisBest!CString::IsEmptyBOOLIsEmpty()const;返回值如果CString对象的长度为0,则返回非零值;否则返回0。说明此成员函数用来测试一个CString对象是否是空的。示例下面的例子说明了如何使用CString::IsEmpty。//CString::IsEmpty示例CStrings;ASSERT(s.IsEmpty());请参阅CString::GetLengthCString::LeftCStringLeft(intnCount)const;throw(CMemoryException);返回的字符串是前nCount个字符。例子CStrings(_T(abcdef));ASSERT(s.Left(2)==_T(ab));CString::LoadStringBOOLLoadString(UINTnID);throw(CMemoryException);返回值如果加载资源成功则返回非零值;否则返回0。nID一个Windows字符串资源ID。说明此成员函数用来读取一个由nID标识的Windows字符串资源,并放入一个已有CString对象中。示例下面的例子说明了如何使用CString::LoadString。//CString::LoadString示例#defineIDS_FILENOTFOUND1CStrings;if(!s.LoadString(IDS_FILENOTFOUND))CString::MakeLowervoidMakeLower();改变字符的小写CString::MakeReversevoidMakeReverse();字符倒置CString::MakeUppervoidMakeUpper();改变字符的大写CString::MidCStringMid(intnFirst)const;CStringMid(intnFirst,intnCount)const;nCount代表要提取的字符数,nFirst代表要提取的开始索引位置例子CStrings(_T(abcdef));ASSERT(s.Mid(2,3)==_T(cde));CString::ReleaseBuffervoidReleaseBuffer(intnNewLength=-1);参数nNewLength此字符串的以字符数表示的新长度,不计算结尾的空字符。如果这个字符串是以空字符结尾的,则参数的缺省值-1将把CString的大小设置为字符串的当前长度。说明使用ReleaseBuffer来结束对由GetBuffer分配的缓冲区的使用。如果你知道缓冲区中的字符串是以空字符结尾的,则可以省略nNewLength参数。如果字符串不是以空字符结尾的,则可以使用nNewLength指定字符串的长度。在调用ReleaseBuffer或其它CString操作之后,由GetBuffer返回的地址是无效的。示例下面的例子说明了如何使用CString::ReleaseBuffer。//CString::ReleaseBuffer示例CStrings;s=abc;LPTSTRp=s.GetBuffer(1024);strcpy(p,abc);//直接使用该缓冲区ASSERT(s.GetLength()==3);//字符串长度=3s.ReleaseBuffer();//释放多余的内存,现在p无效。ASSERT(s.GetLength()==3);//长度仍然是3CString::RemoveintCString::Remove(TCHARch);返回值返回

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

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

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

×
保存成功