因为今天做那个MFC的编辑框有一些框就是要判断输入的是否是数值,一开始我就直接把编辑框那个NUMBER属性给设置了 然后发现 负数不能输入 我TM的差点脑袋都炸了
然后就去百度搜索函数直接判断字符串数值包括小数,负数,整数这三个的,发现没有官方函数????
好吧 然后我就去使用正则表达式来搞这个了 反正从c++11里就添加了正则表达式的支持
#include <regex>
#include <iostream>
#include <string>
//正则匹配数值包括负数 小数 整数
std::string str{ "-[0-9]+(.[0-9]+)?|[0-9]+(.[0-9]+)?" };
std::regex re(str);
bool retMatchStr = false;
int main()
{
system("chcp 65001");
std::string numberStr = "89";
retMatchStr = std::regex_match(numberStr, re);
if (!retMatchStr)
{
std::cout << "请输入正确的数值" << std::endl;
//MessageBoxA("请输入正确的数值"); MFC下使用 然后可以接一个return跳出
}
else
{
std::cout << "yes" << std::endl;
}
// retMatchStr == TRUE 就保留这个数值字符串
system("pause");
return 0;
}
regex_match(s,re),判断正则表达式re和s是否完全匹配,能从头匹配到尾叫完全。能匹配返回TRUE,不能就FALSE
原文作者:aircraft
原文链接:https://www.cnblogs.com/DOMLX/p/12097381.html
如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!
txttool.com 说一段 esp56物联 查询128 IP查询