字符操作小技巧总结

1、字符截取(含中英文)

    利用api函数IsDBCSLeadByte(),非零为多字节的首字符,否则为单字节字符。例如:

    if (IsDBCSLeadByte(str.GetAt(num)))
       {
     AfxMessageBox("该字节为多字节的首字符!");         //注:为真只表示是首字符集中的一个字符,不表示一定就是汉字的首字符,首字符中的字符也可以做汉字的第二个字节。
       }

具体实现如下:

CString CTestStrCutDlg::GetLeftCut(CString str, int num)
{
 CString strCut;
 if (num > str.GetLength())
 {
  return str;
 }
 if (num > 0)
 {
  BOOL bCircle = FALSE,bNext = FALSE;
  for(int i = 0 ;i<num;i++)
  {
   if (bCircle)
   {
    bCircle = FALSE;
    continue;
   }
   if (IsDBCSLeadByte(str.GetAt(i)))
   {
    bCircle = TRUE;
    if (i==num-1)
    {
     bNext = TRUE;
    }
   }
  }    
  if (bNext)
  {
   strCut = str.Left(num-1);     
  }
  else
  {
   strCut = str.Left(num);
  }
 }
    return strCut;
}


 2、字符分割

//分割函数,通过符号分割字符串 
int SplitString(LPCTSTR lpszStr,      //要分割的字符串
    LPCTSTR lpszSplit,    //分隔符
    CStringArray& rArrString, //存储的数组
    BOOL bAllowNullString)    //
{   
 rArrString.RemoveAll();   
 CString szStr = lpszStr;   
 szStr.TrimLeft();   
 szStr.TrimRight();   
 if(szStr.GetLength()==0)   
 {   
  return 0;   
 }   
 CString szSplit = lpszSplit;   
 if(szSplit.GetLength() == 0)   
 {   
  rArrString.Add(szStr);   
  return 1;   
 }   
 CString s;   
 int n;   
 do {   
  n = szStr.Find(szSplit);   
  if(n > 0)   
  {   
   rArrString.Add(szStr.Left(n));   
   szStr = szStr.Right(szStr.GetLength()-n-szSplit.GetLength());   
   szStr.TrimLeft();   
  }   
  else if(n==0)   
  {   
   if(bAllowNullString)   
    rArrString.Add(_T(""));   
   szStr = szStr.Right(szStr.GetLength()-szSplit.GetLength());   
   szStr.TrimLeft();   
  }   
  else  
  {   
   if((szStr.GetLength()>0)||bAllowNullString)   
    rArrString.Add(szStr);   
   break;   
  }   
 } while(1);   
 return rArrString.GetSize();   
}

3、字符拷贝

strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。

已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);
memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。
void *memcpy( void *dest, const void *src, size_t count );

 

你可能感兴趣的:(字符操作小技巧总结)