zoukankan      html  css  js  c++  java
  • CString类常用操作

    1. 简介

    一个CString对象由可变长度的字符数组构造,由PXSTR m_pszData成员变量维护对象的地址信息。CString对象可以任意替换const char*和LPCTSTR类型的函数参数,而不需要强制转换。

    2. 构造函数

    Cstring构造函数有多种形式,常见的声明如下:

    CString( );
    CString( const CString& stringSrc );
    CString( const unsigned char* psz );
    CString( LPCSTR lpsz );

    例如:

    //无参构造函数
    CString str1;
    
    //拷贝构造
    CString str2(str1);
    CString str3 = str1;
    CString str4 = "cstring obj";
    CString str5("cstring obj");
    
    TCHAR szObj[] = "cstring obj";
    CString str6(szObj);

    3. 字符串数组

    • int GetLength( ) const;
      返回值:
      返回字符串中的字节计数。
      作用:
      获取这个CString对象中的字节计数,不包括结尾的空字符。

    • int GetLength( ) const;
      返回值:
      返回字符串中的字节计数。
      作用:
      获取这个CString对象中的字节计数,不包括结尾的空字符。

    • BOOL IsEmpty( ) const;
      返回值:
      如果CString对象的长度为0,则返回非零值;否则返回0。
      作用:
      测试一个CString对象是否是空的。

    • TCHAR GetAt( int nIndex ) const;
      参数:
      nIndex 位置从零开始
      作用:
      返回字符串中指定位置的字符

    • void SetAt( int nIndex, TCHAR ch );
      参数:
      nIndex 指定位置
      ch 指定字符
      作用:
      指定某个位置的字符

    4. 比较

    • operator 比较操作符系列
      BOOL operator ==( const CString& s1, const CString& s2 );
      BOOL operator ==( const CString& s1, LPCTSTR s2 );
      BOOL operator ==( LPCTSTR s1, const CString& s2 );
      作用:比较两个字符串是否相等,大小写敏感

    • int Compare( LPCTSTR lpsz ) const;
      作用:比较两个字符串,大小写敏感;相等则返回0,我们可以用operator操作符替代Compare函数.

    • int CompareNoCase( LPCTSTR lpsz ) const;
      作用:比较两个字符串是否相等,大小写不敏感,相关等则返回值为0;

    例如:

    CString s1( "abc" );
    CString s2( "abd" );
    
    // Operator is overloaded for both.
    ASSERT( s1 < s2 ); 
    // CString and char*
    ASSERT( "ABC" < s1 ); 
    ASSERT( s2 > "abe" ); 
    
    CString s1( "abc" );
    CString s2( "ABD" );
    
    // 与一个CString比较。
    ASSERT( s1.CompareNoCase( s2 ) == -1 ); 
    // 与LPTSTR字符串比较。
    ASSERT( s1.Compare( "ABE" ) == -1 ); 

    5. 提取

    • CString Mid( int nFirst ) const;
      CString Mid( int nFirst, int nCount ) const;
      作用:
      从对象中提取一个长度为nCount个字符的子串,从nFirst指定的位置开始提取。

    • CString Left( int nCount ) const;
      作用:
      从此CString对象中提取最左边的nCount个字符。

    • CString Right( int nCount ) const;
      作用:
      从此CString对象中提取最右边的nCount个字符。

    CString s( _T("abcdef") );
    ASSERT( s.Mid( 2, 3 ) == _T("cde") );
    
    CString s( _T("abcdef") );
    ASSERT( s.Left(2) == _T("ab") );
    
    CString s( _T("abcdef") );
    ASSERT( s.Right(2) == _T("ef") ); 

    6. 其他转换

    • void TrimRight( );
      void CString::TrimRight( TCHAR chTarget );
      void CString::TrimRight( LPCTSTR lpszTargets );

    • void TrimLeft( );
      void CString::TrimLeft( TCHAR chTarget );
      void CString::TrimLeft( LPCTSTR lpszTargets );

      作用:
      无参的版本剔除最右边(最左边)的空格,Tab键,换行符;
      有参版本剔除指定的字符或者字符串或者子串,若有连续的多个被剔除字符,可以继续被剔除;想同时删除最左边,最右边,可以使用Trim函数,它是TrimLeft和TrimRight的集合

    例如:

    CString strBefore("!@#!@123!@#");
    CString strAfter = strBefore;
    strAfter.TrimLeft("!@#") ;
    
    printf ("Before: "%s"
    ",(LPCTSTR) strBefore );
    printf ("After: "%s"
    ",(LPCTSTR) strAfter );
    
    结果:字符串“!@#!@123!@#”变成了“123!@#”。
    • void MakeUpper( );
      作用:将字符串中的字符全部变为大写字符

    • void MakeLower( );
      作用:将字符串中的字符全部变为小写字符

    • void MakeReverse( );
      作用:将字符串中的字符以倒序排列

    • int Replace( TCHAR chOld, TCHAR chNew );
      int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );
      作用:用其它字符替换指定的字符

    • int Remove ( TCHAR ch );
      作用:从一个字符串中移走指定的字符

    • int Insert( int nIndex, TCHAR ch );
      int Insert( int nIndex, LPCTSTR pstr );
      作用:在字符串中的给定索引处插入一个字符或一个子字符串

    7. 搜索

    • int Find( TCHAR ch ) const;
      int Find( LPCTSTR lpszSub ) const;
      int Find( LPCTSTR lpszSub, int nStart ) const;
      作用:
      在此字符串中搜索指定的字符或者字符串。

      例如:

    // CString::Find( TCHAR ch )
    CString s( "abcdef" );
    ASSERT( s.Find( 'c' ) == 2 );
    ASSERT( s.Find( "de" ) == 3 );
    
    // CString::Find(TCHAR ch,int nStart)
    CString str("The stars are aligned");
    int n = str.Find('e',5);
    ASSERT(n == 12)
    • int ReverseFind( TCHAR ch ) const;
      作用:
      在字符串中反向查找匹配的ch字符
      例如:
    CString s( "abcabc" );
    ASSERT( s.ReverseFind( 'b' ) == 4 );

    8. 缓冲区访问

    • LPTSTR GetBuffer( int nMinBufLength );
      作用:返回一个指向CString对象的内部字符缓冲区的指针(m_pszData),nMinBufLength决定Buffer大小。

    • void ReleaseBuffer( int nNewLength = -1 )
      作用:释放对GetBuffer所返回的缓冲区的控制权。

    说明:
    GetBuffer返回一个指向CString对象的内部字符缓冲区的指针。返回的LPTSTR不是const,因此可以允许直接修改CString的内容。
    如果使用由GetBuffer返回的指针来改变字符串的内容,你必须在使用其它的CString成员函数之前调用ReleaseBuffer函数。
    在调用ReleaseBuffer之后,由GetBuffer返回的地址也许就无效了.
    例如:

    CString s;
    s = "abc";
    LPTSTR p = s.GetBuffer(1024);
    // 直接使用该缓冲区
    strcpy(p, "abc"); 
    // 字符串长度 = 3
    ASSERT( s.GetLength() == 3 ); 
    // 释放多余的内存,现在p无效。
    s.ReleaseBuffer(); 
    // 长度仍然是3
    ASSERT( s.GetLength() == 3 ); 
  • 相关阅读:
    写的好的功能参考地址
    碰撞检测原理
    懒加载原理的实现
    jQuery图片延迟加载插件jQuery.lazyload 的使用
    电子工厂生产楼职位解析
    打印条码方式
    条码打印二
    条码打印三
    CSS实现圆角矩形
    条码打印四
  • 原文地址:https://www.cnblogs.com/jinxiang1224/p/8468313.html
Copyright © 2011-2022 走看看