原文作者:aircraft
原文鏈接:https://www.cnblogs.com/DOMLX/p/12097381.html
因為今天做那個MFC的編輯框有一些框就是要判斷輸入的是否是數值,一開始我就直接把編輯框那個NUMBER屬性給設置了 然后發現 負數不能輸入 我TM的差點腦袋都炸了
然后就去百度搜索函數直接判斷字符串數值包括小數,負數,整數這三個的,發現沒有官方函數????
好吧 然后我就去使用正則表達式來搞這個了 反正從c++11里就添加了正則表達式的支持
正則頭文件是這個:
#include <regex>
示例代碼:
#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() { std::string numberStr = "-8.9#"; 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
用法已經超級簡化了哈 誰看不懂 來跟我說 我頭把你錘爆。。。。。。
若有興趣交流分享技術,可關注本人公眾號,里面會不定期的分享各種編程教程,和共享源碼,諸如研究分享關於c/c++,python,前端,后端,opencv,halcon,opengl,機器學習深度學習之類有關於基礎編程,圖像處理和機器視覺開發的知識