MFC总结(16) --- CString类的简单讲解

原创 2015年11月19日 15:59:54

 CString类作为MFC的常用类,它提供了对字符串的便捷操作。在MFC中可能会见到CStringT,起始它是一个操作可变长度字符串的模板类。CStringT模板类有三个实例:CString、CStringA和CStringW,它们分别提供对TCHAR、char和wchar_t字符类型的字符串的操作。char类型定义的是Ansi字符,wchar_t类型定义的是Unicode字符,而TCHAR取决于MFC工程的属性对话框中的配置属性->常规->字符集属性,如果此属性为使用多字节字符集,则TCHAR类型定义的是Ansi字符,而如果为使用Unicode字符集,则TCHAR类型定义的是Unicode字符。


1. CString类的构造函数
CString(const CString& stringSrc);  将一个已经存在的CString对象stringSrc的内容拷贝到该CString对象。例如:

 CString str1(_T("oSaodiseng"));  // 将常量字符串拷贝到str1      
 CString str2(str1);              // 将str1的内容拷贝到str2   

CString(LPCTSTR lpch, int nLength); 将字符串lpch中的前nLength个字符拷贝到该CString对象。例如:
 CString str(_T("oSaodiseng"),4); // 构造的字符串对象内容为"oSao" 
 

CString(TCHAR ch, int nLength = 1); 使用此函数构造的CString对象中将含有nLength个重复的ch字符。例如:

 CString str(_T('o'),5);  // str为"ooooo" 

2. CString类的大小写转换及顺序转换函数 
CString& MakeLower();   将字符串中的所有大写字符转换为小写字符。
   CString& MakeUpper(); 将字符串中的所有小写字符转换为大写字符。
 CString& MakeReverse(); 将字符串中所有字符的顺序颠倒。
CString str(_T("oSaoDiSeng"));   
str.MakeLower();   // str为"osaodiseng"   
str.MakeUpper();   // str为"OSAODISENG"   
str.MakeReverse(); // str为"GNESIDOAS0" 


 3. CString对象的比较
     CString对象的比较可以通过==、!=、<、>、<=、>=等重载运算符实现,也可以使用Compare和

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



4、CString对象字符串的提取操作


CString Left(int nCount) const;      提取该字符串左边nCount个字符的子字符串,并返回一个包含 这个子字符串的拷贝的CString对象。
        CString Right(int nCount) const;   提取该字符串右边nCount个字符的子字符串,并返回一个包含 这个子字符串的拷贝的CString对象。

       CString Mid(int iFirst,int nCount) const; 提取该字符串中以索引iFirst位置开始的nCount个字符组成的子字符串,并返回一个包含这个子字符串的拷贝的CString对象。
       CString Mid(int iFirst) const; 提取该字符串中以索引iFirst位置开始直至字符串结尾的子字符 串,并返回一个包含这个子字符串的拷贝的CString对象。

5、CString对象字符串的查找操作

       int Find(PCXSTR pszSub,int iStart=0) const throw( );
       int Find(XCHAR ch,int iStart=0) const throw( );
      在CString对象字符串的iStart索引位置开始,查找子字符串pszSub或字符ch第一次出现的位置,如果没有找到则返回-1。

       int FindOneOf(PCXSTR pszCharSet) const throw( );
       查找pszCharSet字符串中的任意字符,返回第一次出现的位置,找不到则返回-1。


       int ReverseFind(XCHAR ch) const throw();

       从字符串末尾开始查找指定的字符ch,返回其位置,找不到则返回-1。这里要注意,尽管是从后向前查找,但是位置的索引还是要从开始算起。

6、CString类的格式化字符串方法

       使用CString类的Format成员函数可以将int、short、long、float、double等数据类型格式化为字符串对象。

       void __cdecl Format(PCXSTR pszFormat,[, argument]...);
	
CString str; 
str.Format(_T("i = %d"), 11); // i = 11


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


       int Replace(PCXSTR pszOld,PCXSTR pszNew);      用字符串pszNew替换CString对象中的子字符串pszOld,返回替换的字符个数。

       int Replace(XCHAR chOld,XCHAR chNew);   用字符chNew替换CString对象中的字符chOld,返回替换的字符个数。

       int Delete(int iIndex,int nCount = 1);    从字符串中删除iIndex位置开始的nCount个字符,返回删除操作后的字符串的长度。

       int Remove(XCHAR chRemove); 删除字符串中的所有由chRemove指定的字符,返回删除的字符个数。


8、判断CString是否为空  isEmpty()

相关文章推荐

MFC中CString的使用总结

在使用MFC的过程中,不可避免的要使用CString类型对字符串进行处理,特别常用的是CString与char*等类型的转换,现将平时常用的方法整理如下。 1.CString类型的初始化 CStrin...
  • abld99
  • abld99
  • 2016年02月29日 10:44
  • 3553

MFC Cstring 类的用法

CString位于头文件afx.h中。 CString 的 成员函数 CString的构造函数 CString( ); 例:CString csStr; ...

MFC 字符串类CString 源代码

原文:http://blog.csdn.net/benny5609/article/details/1926088 CString使用的是引用技术,可以共享数据(这个大家都知道),另外空的CSt...
  • tabe123
  • tabe123
  • 2015年06月03日 19:50
  • 501

MFC的CByteArray、CString类用做动态字节数组使用

C 风格字符串,C++string类,MFC,CString类的区别。

字符串,顾名思义是由字符组成的字符串,在标准C,标准C++,MFC中 字符串这一功能的实现是不相同的,C++完全兼容了C。 1.  标准C中的字符串    在标准C中没有string这样的数据类型...
  • myth_HG
  • myth_HG
  • 2015年09月02日 14:16
  • 581

MFC常用类、成员函数、数组类、Cstring类、CTime类、CPoint类

MFC数组类 CByteArray: CDWordArray: CPtrArray: CUIntArray: CWordArray: CStringArray: 常用成员函数 1.in...

在非mfc程序中使用CString类

在非mfc程序中使用CString类       CString在当今软件设计界里还是小有名气的,说它是MFC中使用的最多的类一点也不过,然而在使用sdk编windows程序的时候,确...

C++中STL的string类模板与MFC中Cstring类区别与联系

最近在做一个linux上的C语言的项目,要频繁的用到char *字符串操作,即用C语言提供的string.h中的标准字符串操作API对字符进行操作,工作量非常的,怀念以前用C++做项目的时候用STL的...

CString类简单模拟

/******************************************************************** * ...
  • LBO4031
  • LBO4031
  • 2011年10月04日 19:06
  • 317
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC总结(16) --- CString类的简单讲解
举报原因:
原因补充:

(最多只允许输入30个字)