zoukankan      html  css  js  c++  java
  • VS2010-MFC(MFC常用类:CString类)

    转自:http://www.jizhuomi.com/software/228.html

     

           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++代码
    CString str1(_T("www.jizhuomi.com"));  // 将常量字符串拷贝到str1     
    CString str2(str1); // 将str1的内容拷贝到str2
     

           CString(LPCTSTR lpch, int nLength);

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

    C++代码

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

     

     

           CString(TCHAR ch, int nLength = 1);

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

    C++代码

     CString str(_T('w'),3); // str为"www"  

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

           CString& MakeLower();

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

           CString& MakeUpper();

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

           CString& MakeReverse();

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

           例如:

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

           3. CString对象的连接

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

    C++代码
    CString str(_T("jizhuomi"));      // str内容为"jizhuomi"   
    str = _T("www.") + str + _T("."); // str为"www.jizhuomi."  
    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++代码
    CString str1 = _T("JiZhuoMi");   
    CString str2 = _T("jizhuomi");   
    if (str1 == str2)   
    {   
         // 因为str1、str2不相等,所以不执行下面的代码   
         ...   
    }   
    if (0 == str1.CompareNoCase(str2))   
    {   
         // 因为不区分大小写比较时,CompareNoCase函数返回0,所以执行下面的代码   
         ...   
    }  

           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++代码
    CString str1 = _T("jizhuomi");  
    CString str2 = str1.Left(3);    // str2为"jiz"   
    str2 = str1.Right(2);           // str2为"mi"   
    str2 = str1.Mid(1,3);           // str2为"izh"   
    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++代码
    CString str = _T("jizhuomi");   
    int nIndex1 = str.Find(_T("zh"));   // nIndex1的值为2   
    int nIndex2 = str.FindOneOf(_T("mui")); // nIndex2的值为1   
    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++代码
    CString str = _T("jizhuomi");   
    int n1 = str.Replace(_T('i'), _T('j'));  // str为"jjzhuomj",n1为2   
    int n2 = str.Delete(1,2);        // str为"jhuomj",n2为6   
    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++代码
    CString str;   
    int a = 1;   
    float b = 2.3f;   
    str.Format(_T("a=%d,b=%f"), a, b);  // str为"a=1,b=2.300000" 
     

            关于CString类的内容就讲到这里了,用法不少,但仍不全,大家可以查看MSDN深入学习。

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/Tang-tangt/p/9472563.html
Copyright © 2011-2022 走看看