问题由来:今天遇到了这样一个问题,有一个CString类型的字符串,其中有一个数字,如何让这个数字+1后,再写回到CString中,并且输出
废话少说,直接上结果,然后分析
代码如下:
LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: Add validation code
CString strDate ="abcd(123)ff";
int nstrPos = strDate.Find(_T("("));
int nendPos = strDate.Find(_T(")"));
CString strGetDate = strDate.Mid(nstrPos+1,nendPos-nstrPos-1);
MessageBox(strGetDate);
return 0;
}
其实就是使用了CString的几个函数 find,mid。
下面是他们的具体解释
CString Mid( int nFirst ) const;
CString Mid( int nFirst, int nCount ) const;
/*返回值:
返回一个包含指定范围字符的拷贝的CString对象。注意,这个返回的CString对象可能是空的。
参数:
nFirst 此CString对象中的要被提取的子串的第一个字符的从零开始的索引。
nCount 要从此CString对象中提取的字符数。如果没有提供这个参数,则字符串的其余部分都被提取。
对于多字节字符集(MBCS),nCount指的是每8位字符的数目;也就是说,在一个多字节字符中开始和结尾字节被算作两个字符。 */
int Find( TCHAR ch ) const;
int Find( LPCTSTR lpszSub ) const;
int Find( TCHAR ch, int nStart ) const;
int Find( LPCTSTR lpszSub, int nStart ) const;
// 返回此CString对象中与需要的子字符串或字符匹配的第一个字符的从零开始的索引;
//如果没有找到子字符串或字符则返回-1
/*参数含义:
ch 要搜索的单个字符。
lpszSub 要搜索的子字符串。
nStart 字符串中开始搜索的字符的索引,如果是0,则是从头开始搜索。如果nStart不是0,则位于nStart处的字符不包括在搜索之内。
pstr 指向要搜索的字符串的指针*/
在遇到这种问题时,字符串都是有一定的规律的,使用一定的算法,然后再结合CString的函数就可以解决这些问题,现在抛砖引玉,以后遇到一种情况在这改一次。