MFC,如何检查 CString 格式是不是与 IP 格式匹配
Posted
技术标签:
【中文标题】MFC,如何检查 CString 格式是不是与 IP 格式匹配【英文标题】:MFC, How do I check the CString format is match the IP FormatMFC,如何检查 CString 格式是否与 IP 格式匹配 【发布时间】:2014-05-05 08:53:41 【问题描述】:MFC,如何检查 CString 格式是否与 IP 格式匹配,
例如用户输入
192.168,1,1 错误格式
256.256.2.2 错误格式
192.168.2 错误格式
一些提示告诉我,谢谢
【问题讨论】:
如果您尝试验证用户输入的字符串,您可以改用CIPAddressCtrl
。
【参考方案1】:
使用Find()
、Mid()
或Tokenize()
搜索字符串并根据一些必需的规则验证其内容:
例如
-
没有字母字符
正好是 3 个句点 (.)
句号之间的数字
0
第一个数字 > 0
等等……
【讨论】:
【参考方案2】:好的,我找到了解决办法
// precisely 3 periods (.), my ip is save if strCtrlIP
CString strCheck(strCtrlIP);
int nPointNum = 0;
nPointNum = strCheck.Remove('.');
if(nPointNum != 3)
AfxMessageBox(_T("IP example:192.168.0.1"));
return;
// numbers between periods, 0 <= number <= 255
strCheck.Format(_T("%s"), strCtrlIP);
while(strCheck.Find(_T(".")) >= 0)
int nLoc = strCheck.Find(_T("."));
int nVal = _ttoi(strCheck.Left(nLoc));
strCheck = strCheck.Right(strCheck.GetLength() - (nLoc+1)); // egnore point
if(nVal < nUserLimitDown || nVal > nUserLimitUp || strCheck.IsEmpty())
AfxMessageBox(_T("IP example:192.168.0.1"));
return;
if(_ttoi(strCheck) < nUserLimitDown || _ttoi(strCheck) > nUserLimitUp)
AfxMessageBox(_T("IP example:192.168.0.1"));
return;
【讨论】:
以上是关于MFC,如何检查 CString 格式是不是与 IP 格式匹配的主要内容,如果未能解决你的问题,请参考以下文章
如何将 MFC CString 与 boost 字符串算法库一起使用