CString类所有成员函数详解
### CString 类成员函数详解 #### 一、简介 在 C++ 开发中,尤其是在使用 Microsoft Visual C++(简称 VC)进行 Windows 应用程序开发时,`CString` 类是极其常用的一个类。它提供了丰富的字符串处理功能,使得开发者能够更加方便高效地处理字符串相关的任务。本文将详细介绍 `CString` 类的所有成员函数及其用法,帮助开发者更好地理解和运用这些功能。 #### 二、主要成员函数详解 ##### 1. `CString::Compare` **函数原型**: ``` int Compare(LPCTSTR lpsz) const; ``` **功能**: 该函数用于比较当前 `CString` 对象与另一个字符串 `lpsz` 的大小关系。比较是基于字典序的,并且区分大小写。 **返回值**: - 如果两个字符串相同,则返回 0; - 如果当前字符串小于 `lpsz`,则返回 -1; - 如果当前字符串大于 `lpsz`,则返回 1。 **示例代码**: ```cpp CString s1("abc"); CString s2("abd"); ASSERT(s1.Compare(s2) == -1); ASSERT(s1.Compare("abe") == -1); ``` ##### 2. `CString::CompareNoCase` **函数原型**: ``` int CompareNoCase(LPCTSTR lpsz) const; ``` **功能**: 与 `Compare` 类似,但该函数不区分大小写。也就是说,在进行字符串比较时,大写字母和小写字母会被视为相同。 **返回值**: - 如果两个字符串相同,则返回 0; - 如果当前字符串小于 `lpsz`,则返回 -1; - 如果当前字符串大于 `lpsz`,则返回 1。 **示例代码**: ```cpp CString s1("AbC"); CString s2("abc"); ASSERT(s1.CompareNoCase(s2) == 0); ``` ##### 3. `CString::Collate` **函数原型**: ``` int Collate(LPCTSTR lpsz) const; ``` **功能**: 此函数的功能与 `CString::Compare` 相同,都是用来比较两个字符串的大小关系,但具体实现方式可能有所不同。 **返回值**: - 如果两个字符串相同,则返回 0; - 如果当前字符串小于 `lpsz`,则返回 -1; - 如果当前字符串大于 `lpsz`,则返回 1。 ##### 4. `CString::CollateNoCase` **函数原型**: ``` int CollateNoCase(LPCTSTR lpsz) const; ``` **功能**: 此函数的功能与 `CString::CompareNoCase` 相同,都是用来比较两个字符串的大小关系,且不区分大小写,但具体实现方式可能有所不同。 **返回值**: - 如果两个字符串相同,则返回 0; - 如果当前字符串小于 `lpsz`,则返回 -1; - 如果当前字符串大于 `lpsz`,则返回 1。 ##### 5. `CString::CString` **函数原型**: ``` CString(); CString(const CString& stringSrc); CString(TCHAR ch, int nRepeat = 1); CString(LPCTSTR lpch, int nLength); CString(const unsigned char *psz); CString(LPCWSTR lpsz); CString(LPCSTR lpsz); ``` **功能**: `CString` 类的构造函数,用于创建一个新的 `CString` 对象。 - `CString()`:默认构造函数,创建一个空字符串。 - `CString(const CString& stringSrc)`:拷贝构造函数,创建一个与 `stringSrc` 相同的字符串。 - `CString(TCHAR ch, int nRepeat = 1)`:创建一个由字符 `ch` 重复 `nRepeat` 次组成的字符串。 - `CString(LPCTSTR lpch, int nLength)`:从长度为 `nLength` 的字符串 `lpch` 创建一个新字符串。 - `CString(const unsigned char *psz)`:从 `psz` 指向的字符串创建一个新字符串。 - `CString(LPCWSTR lpsz)`:从宽字符字符串 `lpsz` 创建一个新字符串。 - `CString(LPCSTR lpsz)`:从多字节字符字符串 `lpsz` 创建一个新字符串。 **示例代码**: ```cpp CString s1; // 创建空字符串 CString s2("cat"); // 从常量字符串 "cat" 创建 CString s3 = s2; // 通过拷贝构造函数创建 CString s4(s2 + "" + s3); // 连接字符串 CString s5('x'); // 创建包含 'x' 的字符串 CString s6('x', 6); // 创建包含 'xxxxxx' 的字符串 CString s7((LPCSTR)ID_FILE_NEW); // 从资源 ID 创建字符串 ``` ##### 6. `CString::Delete` **函数原型**: ``` int Delete(int nIndex, int nCount = 1); ``` **功能**: 此函数用于从当前字符串中删除指定位置开始的字符。 - `nIndex`:表示要删除的第一个字符的位置索引。 - `nCount`:表示要删除的字符数量,默认值为 1。 **返回值**: 返回删除前字符串的长度。 **注意事项**: - 当 `nCount` 大于或等于 `GetCount() - nIndex` 时,可能会导致错误。 - 如果 `nCount` 太大,没有足够的字符可以删除时,此函数将不执行任何操作。 **示例代码**: ```cpp CString str1("nihao"); str1.Delete(2, 3); // 删除 "iha" ``` ##### 7. `CString::Empty` **函数原型**: ``` void Empty(); ``` **功能**: 此函数用于清空当前字符串对象的内容,使其变为一个空字符串。 **示例代码**: ```cpp CString s("abc"); s.Empty(); ASSERT(s.GetLength() == 0); ``` ##### 8. `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; ``` **功能**: 此函数用于在当前字符串中查找指定的字符或子字符串首次出现的位置索引。如果没有找到,则返回 -1。 - `Find(TCHAR ch) const`:查找字符 `ch` 在字符串中的位置。 - `Find(LPCTSTR lpszSub) const`:查找子字符串 `lpszSub` 在字符串中的位置。 - `Find(TCHAR ch, int nStart) const`:从索引 `nStart` 开始查找字符 `ch`。 - `Find(LPCTSTR lpszSub, int nStart) const`:从索引 `nStart` 开始查找子字符串 `lpszSub`。 **示例代码**: ```cpp CString s("abcdef"); ASSERT(s.Find('c') == 2); ASSERT(s.Find("de") == 3); CString str("The stars are aligned"); int n = str.Find('e', 5); ASSERT(n == 12); ``` ##### 9. `CString::FindOneOf` **函数原型**: ``` int FindOneOf(LPCTSTR lpszCharSet) const; ``` **功能**: 此函数用于查找当前字符串中首次出现的在 `lpszCharSet` 字符集中的任意一个字符的位置索引。如果没有找到,则返回 -1。 **示例代码**: ```cpp CString s("abcdef"); ASSERT(s.FindOneOf("bd") == 1); // 查找首次出现的 "b" 或 "d" ``` 通过以上介绍,我们可以看出 `CString` 类提供了一系列强大的字符串处理功能,包括字符串比较、构造、删除、查找等。熟练掌握这些成员函数的使用方法,对于提高开发效率和代码质量具有重要意义。
剩余16页未读,继续阅读
- 粉丝: 8
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助