zoukankan      html  css  js  c++  java
  • 鸡啄米vc++2010系列41(MFC常用类:CString类)

    上一节鸡啄米讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类。

           CString类简介

           CString类作为MFC的常用类,当之无愧。可以这样说,只要是从事MFC开发,基本都会遇到使用CString类的场合。因为字符串的使用比较普遍,而CString类又提供了对字符串的便捷操作,所以它给MFC开发人员带来了高的开发效率,受到了开发者的欢迎。

           大家使用VS2010的话,可能会见到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字符。

           三个字符串类的操作是一样的,只是处理的字符类型不同。鸡啄米以CString类为讲解对象。

           CString类的字符串操作

           1. CString类的构造函数

           CString类有很多构造函数,这里只介绍几个比较常用的:

           CString(const CString& stringSrc);

           将一个已经存在的CString对象stringSrc的内容拷贝到该CString对象。例如:

    C++代码
    1. CString str1(_T("www.jizhuomi.com"));  // 将常量字符串拷贝到str1      
    2. CString str2(str1);       // 将str1的内容拷贝到str2    

           CString(LPCTSTR lpch, int nLength);

           将字符串lpch中的前nLength个字符拷贝到该CString对象。例如:

    C++代码
    1. CString str(_T("www.jizhuomi.com"),3); // 构造的字符串对象内容为"www"  

           CString(TCHAR ch, int nLength = 1);

           使用此函数构造的CString对象中将含有nLength个重复的ch字符。例如:

    C++代码
    1. CString str(_T('w'),3);  // str为"www"  

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

           CString& MakeLower();

           将字符串中的所有大写字符转换为小写字符。

           CString& MakeUpper();

           将字符串中的所有小写字符转换为大写字符。

           CString& MakeReverse();

           将字符串中所有字符的顺序颠倒。

           例如:

    C++代码
    1. CString str(_T("JiZhuoMi"));   
    2. str.MakeLower();   // str为"jizhuomi"   
    3. str.MakeUpper();   // str为"JIZHUOMI"   
    4. str.MakeReverse(); // str为"IMOUHZIJ"  

           3. CString对象的连接

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

    C++代码
    1. CString str(_T("jizhuomi"));      // str内容为"jizhuomi"   
    2. str = _T("www.") + str + _T("."); // str为"www.jizhuomi."   
    3. str += _T("com");                 // str为"www.jizhuomi.com"  


           4. CString对象的比较

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

           int Compare(PCXSTR psz) const;

           将该CString对象与psz字符串比较,如果相等则返回0,如果小于psz则返回值小于0,如果大于psz则返回值大于0。

           int CompareNoCase(PCXSTR psz) const throw();

           此函数与Compare功能类似,只是不区分大小写。

           例如:

    C++代码
    1. CString str1 = _T("JiZhuoMi");   
    2. CString str2 = _T("jizhuomi");   
    3. if (str1 == str2)   
    4. {   
    5.      // 因为str1、str2不相等,所以不执行下面的代码   
    6.      ...   
    7. }   
    8. if (0 == str1.CompareNoCase(str2))   
    9. {   
    10.      // 因为不区分大小写比较时,CompareNoCase函数返回0,所以执行下面的代码   
    11.      ...   
    12. }  

           5. 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对象。

           例如:

    C++代码
    1. CString str1 = _T("jizhuomi");   
    2. CString str2 = str1.Left(3);    // str2为"jiz"   
    3. str2 = str1.Right(2);           // str2为"mi"   
    4. str2 = str1.Mid(1,3);           // str2为"izh"   
    5. str2 = str1.Mid(5);             // str2为"omi"  

           6. 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。这里要注意,尽管是从后向前查找,但是位置的索引还是要从开始算起。

    C++代码
    1. CString str = _T("jizhuomi");   
    2. int nIndex1 = str.Find(_T("zh"));   // nIndex1的值为2   
    3. int nIndex2 = str.FindOneOf(_T("mui")); // nIndex2的值为1   
    4. int nIndex3 = str.ReverseFind(_T('i'));  // nIndex3的值为7  

           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指定的字符,返回删除的字符个数。

           例如:

    C++代码
    1. CString str = _T("jizhuomi");   
    2. int n1 = str.Replace(_T('i'), _T('j'));  // str为"jjzhuomj",n1为2   
    3. int n2 = str.Delete(1,2);        // str为"jhuomj",n2为6   
    4. int n3 = str.Remove(_T('j'));    // str为"huom",n3为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",等等。

           例如:

    C++代码
    1. CString str;   
    2. int a = 1;   
    3. float b = 2.3f;   
    4. str.Format(_T("a=%d,b=%f"), a, b);  // str为"a=1,b=2.300000"  

            好了,关于CString类的内容就讲到这里了,用法不少,但仍不全,大家可以查看MSDN深入学习。鸡啄米谢谢大家耐心读完本节教程。


    转载地址:http://www.jizhuomi.com/software/228.html

  • 相关阅读:
    Suricata, to 10Gbps and beyond(X86架构)
    golang语法学习(一):变量,常量以及数据类型
    Linux相关问题-CentOS6.5 x64版本号下Tomcat无法自启动的解决的方法
    软考之路--你存在我深深的脑海里
    Apache虚拟主机-解惑篇
    Apache 性能调优-参考篇
    Jmeter脚本录制
    整理LVS架构压力测试工作
    关于jboss的线程问题+java.lang.outofmemoryError
    CUDA入门
  • 原文地址:https://www.cnblogs.com/zfluo/p/5131883.html
Copyright © 2011-2022 走看看