6_1、MFC常用类:CString类

1、简介

CString类为MFC的常用类。
CStringT,实际上它是一个操作可变长度字符串的模板类。CStringT模板类有三个实例:CString、CStringA和CStringW,,它们分别提供对TCHAR、char和wchar_t字符类型的字符串的操作。

char类型定义的是Ansi字符,wchar_t类型定义的是Unicode字符,而TCHAR取决于MFC工程的属性对话框中的Configuration Properties->General->Character Set属性,如果此属性为Use Multi-Byte Character Set,则TCHAR类型定义的是Ansi字符,而如果为Use Unicode Character Set,则TCHAR类型定义的是Unicode字符。

三个字符串类的操作是一样的,只是处理的字符类型不同。

2、 CString类的字符串操作

2.1 CString类的构造函数

  1. CString(const CString& stringSrc);
    将一个已经存在的CString对象stringSrc的内容拷贝到该CString对象。
CString str1(_T("scdn"));  // 将常量字符串拷贝到str1      
CString str2(str1);       // 将str1的内容拷贝到str2
  1. CString(LPCTSTR lpch, int nLength);
    将字符串lpch中的前nLength个字符拷贝到该CString对象。
CString str(_T("csdn"),3); // 构造的字符串对象内容为"www"
  1. CString(TCHAR ch, int nLength = 1);
    使用此函数构造的CString对象中将含有nLength个重复的ch字符。
CString str(_T('w'),3);  // str为"www"

2.2 CString类的大小写转换及顺序转换函数

  1. CString& MakeLower();
    将字符串中的所有大写字符转换为小写字符。
  2. CString& MakeUpper();
    将字符串中的所有小写字符转换为大写字符。
  3. CString& MakeReverse();
    将字符串中所有字符的顺序颠倒。
CString str(_T("SCDN"));   
str.MakeLower();    
str.MakeUpper();     
str.MakeReverse(); 

2.3 CString对象的连接

多个CString对象的连接可以通过重载运算符+、+=实现。

CString str(_T("csdn"));       
str = _T("www.") + str + _T(".");  
str += _T("com");                 

2.4 CString对象的比较

CString对象的比较可以通过==、!=、<、>、<=、>=等重载运算符实现,也可以使用Compare和CompareNoCase成员函数实现。

  1. int Compare(PCXSTR psz) const;
    将该CString对象与psz字符串比较,如果相等则返回0,如果小于psz则返回值小于0,如果大于psz则返回值大于0。
  2. int CompareNoCase(PCXSTR psz) const throw();
    此函数与Compare功能类似,只是不区分大小写。
CString str1 = _T("CSDN");   
CString str2 = _T("csdn");   
if (str1 == str2)   
{   
     // 因为str1、str2不相等,所以不执行下面的代码   
     ...   
}   
if (0 == str1.CompareNoCase(str2))   
{   
     // 因为不区分大小写比较时,CompareNoCase函数返回0,所以执行下面的代码   
     ...   
}

2.5 CString对象字符串的提取操作

  1. CString Left(int nCount) const;
    提取该字符串左边nCount个字符的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
  2. CString Right(int nCount) const;
    提取该字符串右边nCount个字符的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
  3. CString Mid(int iFirst,int nCount) const;
    提取该字符串中以索引iFirst位置开始的nCount个字符组成的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
  4. CString Mid(int iFirst) const;
    提取该字符串中以索引iFirst位置开始直至字符串结尾的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
CString str1 = _T("www.csdn.net");   
CString str2 = str1.Left(3);     
str2 = str1.Right(2);           
str2 = str1.Mid(1,3);          
str2 = str1.Mid(5);

2.6 CString对象字符串的查找操作

  1. int Find(PCXSTR pszSub,int iStart=0) const throw( );
    int Find(XCHAR ch,int iStart=0) const throw( );
    在CString对象字符串的iStart索引位置开始,查找子字符串pszSub或字符ch第一次出现的位置,如果没有找到则返回-1。
  2. int FindOneOf(PCXSTR pszCharSet) const throw( );
    查找pszCharSet字符串中的任意字符,返回第一次出现的位置,找不到则返回-1。
  3. int ReverseFind(XCHAR ch) const throw();
    从字符串末尾开始查找指定的字符ch,返回其位置,找不到则返回-1。这里要注意,尽管是从后向前查找,但是位置的索引还是要从开始算起。
CString str = _T("www.csdn.net");   
int nIndex1 = str.Find(_T("zh"));   
int nIndex2 = str.FindOneOf(_T("mui"));  
int nIndex3 = str.ReverseFind(_T('i'));  

2.7 CString类对象字符串的替换与删除

  1. int Replace(PCXSTR pszOld,PCXSTR pszNew);
    用字符串pszNew替换CString对象中的子字符串pszOld,返回替换的字符个数。
  2. int Replace(XCHAR chOld,XCHAR chNew);
    用字符chNew替换CString对象中的字符chOld,返回替换的字符个数。
  3. int Delete(int iIndex,int nCount = 1);
    从字符串中删除iIndex位置开始的nCount个字符,返回删除操作后的字符串的长度。
  4. int Remove(XCHAR chRemove);
    删除字符串中的所有由chRemove指定的字符,返回删除的字符个数。

2.8 CString类的格式化字符串方法

使用CString类的Format成员函数可以将int、short、long、float、double等数据类型格式化为字符串对象。
void __cdecl Format(PCXSTR pszFormat,[, argument]…);

  • 参数pszFormat为格式控制字符串;参数argument可选,为要格式化的数据,一般每个argument在pszFormat中都有对应的表示其类型的子字符串,int型的argument对应的应该是"%d",float型的应对应"%f",等等。
CString str;   
int a = 1;   
float b = 2.3f;   
str.Format(_T("a=%d,b=%f"), a, b);  // str为"a=1,b=2.300000"
  • 40
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值