《2023年CString成员函数详解.pdf》由会员分享,可在线阅读,更多相关《2023年CString成员函数详解.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CString 类所有成员函数详解 VC 里 CString 是我们最常用的类之一,我们觉得对它很熟悉了,可是你知道它的所有用法吗?还是系统的学习一下吧,认真看完本文就OK 了。下面开始:CString:Compare int Compare(LPCTSTR lpsz)const;返回值 字符串一样 返回 0 小于 lpsz 返回-1 大于 lpsz 返回 1 区分大小字符 CString s1(abc);CString s2(abd);ASSERT(s1.Compare(s2)=-1);ASSERT(s1.Compare(abe)=-1);CString:CompareNoCase int
2、CompareNoCase(LPCTSTR lpsz)const;返回值 字符串一样 返回 0 小于 lpsz 返回-1 大于 lpsz 返回 1 不区分大小字符 CString:Collate int Collate(LPCTSTR lpsz)const;同 CString:Compare CString:CollateNoCase int CollateNocase(LPCTSTR lpsz)const;同 CString:CompareNoCase CString:CString CString();CString(const CString&stringSrc);CString(TCH
3、AR ch,int nRepeat=1);CString(LPCTSTR lpch,int nLength);CString(const unsigned char*psz);CString(LPCWSTR lpsz);CString(LPCSTR lpsz);例子最容易说明问题 CString s1;CString s2(cat);CString s3=s2;CString s4(s2+s3);CString s5(x);/s5=x CString s6(x,6);/s6=xxxxxx CString s7(LPCSTR)ID_FILE_NEW);/s7=Create a new docum
4、ent CString city=Philadelphia;CString:Delete int Delete(int nIndex,int nCount=1);返回值是被删除前的字符串的长度 nIndex 是第一个被删除的字符,nCount 是一次删除几个字符。根据我实验得出的结果:当 nCount要删除字符串的最大长度(GetCount()-nIndex)时会出错,当 nCount 过大,没有足够的字符删除时,此函数不执行。例子 CString str1,str2,str3;char a;str1=nihao;str2=nIhao;int x;/int i=(str1=str2);str1
5、.Delete(2,3);如果 nCount(3)GetCount()nIndex(5-2)就会执行错误 CString:Empty Void Empty();没有返回值 清空操作;例子 CString s(abc);s.Empty();ASSERT(s.GetLength()=0);CString:Find int Find(TCHAR ch)const;int Find(LPCTSTR lpszSub)const;int Find(TCHAR ch,int nStart)const;int Find(LPCTSTR lpszSub,int nStart)const;返回值 不匹配的话返回-
6、1;索引以 0 开始 nStar 代表以索引值 nStart 的字符开始搜索,即为包含以索引 nStart 字符后的字符串 例子 CString s(abcdef);ASSERT(s.Find(c)=2);ASSERT(s.Find(de)=3);Cstring str(“The stars are aligned”);于返回大于返回不区分大小字符同同例子最容易说明问题返回值是被删数不执行例子如果就会执行错误没有返回值清空操作例子返回值不匹配括字符并且从零开始的索引值例子一个格式控制字符串字符串标识符例Ing n=str.Find(e,5);ASSERT(n=12)CString:FindOn
7、eOf int FindOneOf(LPCTSTR lpszCharSet)const;返回值 不匹配的话返回-1;索引以 0 开始 注意:返回此字符串中第一个在 lpszCharSet 中 也包括字符并且从零开始的索引值 例子 CString s(abcdef);ASSERT(s.FindOneOf(xd)=3);/d is first match.CString:Format void Format(LPCTSTR lpszFormat,.);void Format(UINT nFormatID,.);lpszFormat 一个格式控制字符串 nFormatID 字符串标识符 例子 CSt
8、ring str;Str.Format(“%d”,13);此时 Str 为 13 CString:GetAt TCHAR GetAt(int nIndex)const;返回标号为 nIndex 的字符,你可以把字符串理解为一个数组,GetAt 类似于.注意 nIndex 的范围,如果不合适会有调试错误。CString:GetBuffer LPTSTR GetBuffer(int nMinBufLength);返回值 一个指向对象的(以空字符结尾的)字符缓冲区的 LPTSTR 指针。参数 nMinBufLength 字符缓冲区的以字符数表示的最小容量。这个值不包括一个结尾的空字符的空间。说明 此
9、成员函数返回一个指向 CString 对象的内部字符缓冲区的指针。返回的 LPTSTR 不是 const,因此可以允许直接修改 CString 的内容。如果你使用由 GetBuffer 返回的指针来改变字符串的内容,你必须在使用其它的 CString 成员函数之前调用 ReleaseBuffer 函数。在调用 ReleaseBuffer 之后,由 GetBuffer 返回的地址也许就无效了,因为其它的 CString 操作可能会导致CString 缓冲区被重新分配。如果你没有改变此 CString 的长度,则缓冲区不会被重新分配。当此 CString 对象被销毁时,其缓冲区内存将被自动释放。注
10、意,如果你自己知道字符串的长度,则你不应该添加结尾的空字符。但是,当你用 ReleaseBuffer 来释放该缓冲区时,你必须指定最后的字符串长度。如果你添加了结尾的空字符,你应该给 ReleaseBuffer 的长度参数传递-1,ReleaseBuffer 将对该缓冲区执行 strlen 来确定它的长度。下面的例子说明了如何用 CString:GetBuffer。/CString:GetBuffer 例子 于返回大于返回不区分大小字符同同例子最容易说明问题返回值是被删数不执行例子如果就会执行错误没有返回值清空操作例子返回值不匹配括字符并且从零开始的索引值例子一个格式控制字符串字符串标识符例C
11、String s(abcd);#ifdef _DEBUG afxDump CString s s n;#endif LPTSTR p=s.GetBuffer(10);strcpy(p,Hello);/直接访问 CString 对象。s.ReleaseBuffer();#ifdef _DEBUG afxDump CString s s n;#endif CString:GetLength int GetLength()const;返回值 返回字符串中的字节计数。说明 此成员函数用来获取这个 CString 对象中的字节计数。这个计数不包括结尾的空字符。对于多字节字符集(MBCS),GetLeng
12、th 按每一个 8 位字符计数;即,在一个多字节字符中的开始和结尾字节被算作两个字节。示例 下面的例子说明了如何使用CString:GetLength。/CString:GetLength 示例 CString s(abcdef);ASSERT(s.GetLength()=6);CString:Insert int Insert(int nIndex,TCHAR ch);int Insert(int nIndex,LPCTSTR pstr);返回修改后的长度,nIndex 是字符(或字符串)插入后的索引号例子 CString str(“HockeyBest”);int n=str.Insert
13、(6,“is”);ASSERT(n=str.GetLength();printf(“1:%sn”,(LPCTSTR)str);n=str.Insert(6,);ASSERT(n=str.GetLength();printf(“2:%sn”,(LPCTSTR)STR);n=str.Insert(555,1);ASSERT(n=str.GetLength();printf(“3:%sn”,(LPCTSTR)str);输出 1.Hockeyis Best 2.Hockey is Best 3.Hockey is Best!于返回大于返回不区分大小字符同同例子最容易说明问题返回值是被删数不执行例子如果
14、就会执行错误没有返回值清空操作例子返回值不匹配括字符并且从零开始的索引值例子一个格式控制字符串字符串标识符例CString:IsEmpty BOOL IsEmpty()const;返回值 如果 CString 对象的长度为 0,则返回非零值;否则返回 0。说明 此成员函数用来测试一个 CString 对象是否是空的。示例 下面的例子说明了如何使用 CString:IsEmpty。/CString:IsEmpty 示例 CString s;ASSERT(s.IsEmpty();请参阅 CString:GetLength CString:Left CString Left(int nCount)c
15、onst;throw(CMemoryException);返回的字符串是前 nCount 个字符。例子 CString s(_T(abcdef);ASSERT(s.Left(2)=_T(ab);CString:LoadString BOOL LoadString(UINT nID);throw(CMemoryException);返回值 如果加载资源成功则返回非零值;否则返回 0。nID 一个 Windows 字符串资源 ID。说明 此成员函数用来读取一个由 nID 标识的 Windows 字符串资源,并放入一个已有 CString 对象中。示例 下面的例子说明了如何使用 CString:Lo
16、adString。/CString:LoadString 示例#define IDS_FILENOTFOUND 1 CString s;if(!s.LoadString(IDS_FILENOTFOUND)CString:MakeLower void MakeLower();改变字符的小写 CString:MakeReverse void MakeReverse();字符倒置 CString:MakeUpper void MakeUpper();于返回大于返回不区分大小字符同同例子最容易说明问题返回值是被删数不执行例子如果就会执行错误没有返回值清空操作例子返回值不匹配括字符并且从零开始的索引值例
17、子一个格式控制字符串字符串标识符例改变字符的大写 CString:Mid CString Mid(int nFirst)const;CString Mid(int nFirst,int nCount)const;nCount 代表要提取的字符数,nFirst 代表要提取的开始索引位置 例子 CString s(_T(abcdef);ASSERT(s.Mid(2,3)=_T(cde);CString:ReleaseBuffer void ReleaseBuffer(int nNewLength=-1);参数 nNewLength 此字符串的以字符数表示的新长度,不计算结尾的空字符。如果这个字 符
18、串是以空字符结尾的,则参数的缺省值1 将把 CString 的大小设置为 字符串的当前长度。说明 使用 ReleaseBuffer 来结束对由 GetBuffer 分配的缓冲区的使用。如果你知道缓 冲区中的字符串是以空字符结尾的,则可以省略 nNewLength 参数。如果字符 串不是以空字符结尾的,则可以使用 nNewLength 指定字符串的长度。在调用 ReleaseBuffer 或其它 CString 操作之后,由 GetBuffer 返回的地址是无效的。示例 下面的例子说明了如何使用 CString:ReleaseBuffer。/CString:ReleaseBuffer 示例 CS
19、tring s;s=abc;LPTSTR p=s.GetBuffer(1024);strcpy(p,abc);/直接使用该缓冲区 ASSERT(s.GetLength()=3);/字符串长度=3 s.ReleaseBuffer();/释放多余的内存,现在 p 无效。ASSERT(s.GetLength()=3);/长度仍然是 3 CString:Remove int CString:Remove(TCHAR ch);返回值 返回从字符串中移走的字符数。如果字符串没有改变则返回零。参数 ch 要从一个字符串中移走的字符。说明 此成员函数用来将 ch 实例从字符串中移走。与这个字符的比较是区分大小
20、写 的。示例/从一个句子中移走小写字母c:CString str(“This is a test.”);int n=str.Remove(t);于返回大于返回不区分大小字符同同例子最容易说明问题返回值是被删数不执行例子如果就会执行错误没有返回值清空操作例子返回值不匹配括字符并且从零开始的索引值例子一个格式控制字符串字符串标识符例ASSERT(n=2);ASSERT(str=“This is a es.”);CString:Replace int Replace(TCHAR chOld,TCHAR chNew);int Replace(LPCTSTR lpszOld,LPCTSTR lpszNe
21、w);返回值 返回被替换的字符数。如果这个字符串没有改变则返回零。参数 chOld 要被 chNew 替换的字符 chNew 要用来替换 chOld 的字符。lpszOld 一个指向字符串的指针,该字符串包含了要被 lpszNew 替换的字符。lpszNew 一个指向字符串的指针,该字符串包含了要用来替换 lpszOld 的字符。说明 此成员函数用一个字符替换另一个字符。函数的第一个原形在字符串中用 chNew 现场替换 chOld。函数的第二个原形用 lpszNew 指定的字符串替换 lpszOld 指定 的子串。在替换之后,该字符串有可能增长或缩短;那是因为 lpszNew 和 lpszOld 的长度 不需要是相等的。两种版本形式都进行区分大小写的匹配。全文至此结束。于返回大于返回不区分大小字符同同例子最容易说明问题返回值是被删数不执行例子如果就会执行错误没有返回值清空操作例子返回值不匹配括字符并且从零开始的索引值例子一个格式控制字符串字符串标识符例