CString::SpanIncluding函数的使用

本文介绍如何使用CString::SpanIncluding方法检查字符串是否全为数字,并提供去除空格及包含特定字符的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用CString::SpanIncluding可以检验字符串的合法性,是否是我们要求的字符,比如全是数字构成的字符串,我们可以用下面的代码进行判断:

[cpp]
 
 1. CString strTarget;
   ......
  1.   if ( strTarget == strTarget.SpanIncluding( _T("0123456789") ) )
  2. {
  3. // 字符串由数字构成,符合要求
  4. }
	CString strTarget;
        ......

	if ( strTarget == strTarget.SpanIncluding( _T("0123456789") ) ) 
	{
		// 字符串由数字构成,符合要求
	}
或者

[cpp]
  1. CString strTarget;
  2. ......
  3. CString strTemp = strTarget.SpanIncluding( _T("0123456789") )
  4. if ( strTarget.GetLength() == strTemp.GetLength() )
  5. {
  6. // 字符串由数字构成,符合要求
  7. }
	CString strTarget;
        ......
        CString strTemp = strTarget.SpanIncluding( _T("0123456789") ) 
	if ( strTarget.GetLength() == strTemp.GetLength() ) 
	{
		// 字符串由数字构成,符合要求
	}
那为什么能够实现这样的检验呢?对于CString::SpanIncluding,遍历目标字符串,如果发现某个字符不是参数字符集(比如_T("0123456789"))中的字符,则立即返回。对于上例,如果满足if条件,肯定能判断符合要求。

不过,目标字符串一般是用户输入的,考虑到用户在字符串的首部或尾部可能会加上空格,上面的代码可能会判断不通过。所以,在判断之前,应该先调用CString::Trim,将字符串的首尾空格去除掉,然后再判断。

如果对于可输入的Combox组合框,我们只允许输入数字或指定的文字,比如下拉列表中包含“分钟”的字符,选中某项后将分钟也放置到组合框的输入框中,只允许输入数字或者带“分钟”字样的字符。我们可以先将“分钟”字样过滤掉,考虑到用户可能会输入空格,调用CString::Trim将首尾空格去掉,然后在使用CString::SpanIncluding来判别。

对于非MFC工程怎么处理呢?跟踪CString::SpanIncluding的代码,底层调用其实就是C函数_tcsspn,使用如下的代码判断即可。

[cpp]
  1. BOOL IsDataValid( LPCTSTR lpStrTarget )
  2. {
  3. int nLen = _tcslen( lpStrTarget );
  4. if ( 0 == nLen )
  5. {
  6. return FALSE;
  7. }
  8. int nIndex = _tcsspn( lpStrTarget, _T("0123456789") );
  9. return ( nLen == nIndex ) ? TRUE : FALSE;
  10. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值