MFC_CString



MSDN:Cstring类成员函数

https://msdn.microsoft.com/ja-jp/library/ms928965.aspx


Cstring转Char*和转Char数组

    TCHAR* szDecimalMark = NULL;   
     szDecimalMark = new TCHAR[2];
    _tcscpy_s(szDecimalMark, 2, _T("."));

 CHAR* szDecimalMark = NULL;
  USES_CONVERSION;
 szDecimalMark = (CHAR*)(LPCSTR)T2A(_T("aaa"));

CHAR szchar[100];

strcpy(szchar,szDecimalMark );


Char*转CString

    Cstring strTemp=szDecimalMark;


Cstring判断字符串

例:判断字符串是不是在1234567890.之后,不是就结束

strRet = strInput.SpanIncluding(_T("1234567890."));
 if(strRet != strInput || strInput == _T("")){
  return FALSE;
 }


Cstring分割(按‘,’)
      int nStar = 0,nPos = 0;
      nPos = strConditionSerial.Find(',');
      while(nPos != -1)
      {
      CString strSerial = strConditionSerial.Mid(nStar,nPos - nStar);
      arrSerial.Add(strSerial);
      nStar = nPos+1;
      nPos = strConditionSerial.Find(',', nStar);
      }
     CString strLastSerial = strConditionSerial.Mid(nStar);
     arrSerial.Add(strLastSerial);


判断Cstring只包含数字和字母(正则表达式判断)

#include <atlrx.h>

BOOL IsNumberOrChar(CString strInput)
{
 CString strRegex = REGEX;
 TCHAR* pCharReg = NULL;
 TCHAR* pCharInput = NULL;
 CAtlRegExp<CAtlRECharTraitsW> reRule;
 CAtlREMatchContext<CAtlRECharTraitsW> mcRule;
 const CAtlREMatchContext<>::RECHAR* szStart = 0;
 const CAtlREMatchContext<>::RECHAR* szEnd = 0;


 pCharReg = (TCHAR*)(LPCTSTR)strRegex;
 REParseError status = reRule.Parse((const ATL::CAtlRegExp<CAtlRECharTraitsW>::RECHAR *)pCharReg);
 if (status != REPARSE_ERROR_OK)
 {
  return FALSE;
 }

 
 pCharInput = (TCHAR*)(LPCTSTR)strInput;
 if (!reRule.Match((const ATL::CAtlRegExp<CAtlRECharTraitsW>::RECHAR *)pCharInput, &mcRule))
 {
  return FALSE;
 }
 else
 {
  mcRule.GetMatch(0, &szStart, &szEnd);
  ptrdiff_t nLength = szEnd - szStart;
  CString strTemp(szStart, static_cast<int>(nLength));
  if(strTemp.Compare(strInput) != 0)
  {
   return FALSE;
  }
  else
  {
   return TRUE;
  }
 }
}

CString完全判断和不区分大小写判断

CString str1;
Cstring str2;

if(str1 ==  str2)                              //区分字母大小写,必须完全一样                                

if(str1.CompareNoCase(str2))      //不区分字母大小写


CString转LPCSTR 

LPCSTR lpStr;
CString str = _T("test");
lpStr = (LPWSTR)(LPCTSTR) str;  //中间的LPCTSTR必须加上,先将CString转成LPCSTR常量型,再转成LPSTR型。

GetBuffer和ReleaseBuffer
一般在GetBuffer后,都要RelaseBuffer。
举例:
   char* psz = str.GetBuffer(nLen);
        fread(psz, sizeof(char), nLen, fp); //读文件内容
        str.ReleaseBuffer(); //千万不能缺少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值