qt中如何判斷字符串是否為數字,整數,浮點數?

在 Qt 中,可以使用多種方法來判斷字符串是否為數字、整數或浮點數。Qt 提供了一些方便的字符串和數值處理函數,可以幫助你實現這些判斷。以下是幾種常見的方法:

1. 使用 QRegularExpression

Qt 提供了 QRegularExpression 類,可以用來匹配字符串模式。

判斷是否為數字(整數或浮點數)
#include <QRegularExpression>
#include <QString>
#include <QDebug>bool isNumber(const QString &str) {QRegularExpression re("^-?\\d+(\\.\\d+)?$");QRegularExpressionMatch match = re.match(str);return match.hasMatch();
}int main() {QString testStr1 = "123";QString testStr2 = "-456.78";QString testStr3 = "abc";qDebug() << "Is testStr1 a number?" << isNumber(testStr1);  // trueqDebug() << "Is testStr2 a number?" << isNumber(testStr2);  // trueqDebug() << "Is testStr3 a number?" << isNumber(testStr3);  // falsereturn 0;
}
判斷是否為整數
bool isInteger(const QString &str) {QRegularExpression re("^-?\\d+$");QRegularExpressionMatch match = re.match(str);return match.hasMatch();
}int main() {QString testStr1 = "123";QString testStr2 = "-456";QString testStr3 = "456.78";QString testStr4 = "abc";qDebug() << "Is testStr1 an integer?" << isInteger(testStr1);  // trueqDebug() << "Is testStr2 an integer?" << isInteger(testStr2);  // trueqDebug() << "Is testStr3 an integer?" << isInteger(testStr3);  // falseqDebug() << "Is testStr4 an integer?" << isInteger(testStr4);  // falsereturn 0;
}
判斷是否為浮點數
bool isFloat(const QString &str) {QRegularExpression re("^-?\\d+\\.\\d+$");QRegularExpressionMatch match = re.match(str);return match.hasMatch();
}int main() {QString testStr1 = "123.45";QString testStr2 = "-456.78";QString testStr3 = "123";QString testStr4 = "abc";qDebug() << "Is testStr1 a float?" << isFloat(testStr1);  // trueqDebug() << "Is testStr2 a float?" << isFloat(testStr2);  // trueqDebug() << "Is testStr3 a float?" << isFloat(testStr3);  // falseqDebug() << "Is testStr4 a float?" << isFloat(testStr4);  // falsereturn 0;
}

2. 使用 QString 的 toInt 和 toDouble 方法

另一種方法是嘗試將字符串轉換為整數或浮點數,并檢查轉換是否成功。

判斷是否為數字(整數或浮點數)
bool isNumber(const QString &str) {bool ok;str.toDouble(&ok);return ok || str.toInt(&ok) && ok;
}int main() {QString testStr1 = "123";QString testStr2 = "-456.78";QString testStr3 = "abc";qDebug() << "Is testStr1 a number?" << isNumber(testStr1);  // trueqDebug() << "Is testStr2 a number?" << isNumber(testStr2);  // trueqDebug() << "Is testStr3 a number?" << isNumber(testStr3);  // falsereturn 0;
}
判斷是否為整數
bool isInteger(const QString &str) {bool ok;return str.toInt(&ok) && ok;
}int main() {QString testStr1 = "123";QString testStr2 = "-456";QString testStr3 = "456.78";QString testStr4 = "abc";qDebug() << "Is testStr1 an integer?" << isInteger(testStr1);  // trueqDebug() << "Is testStr2 an integer?" << isInteger(testStr2);  // trueqDebug() << "Is testStr3 an integer?" << isInteger(testStr3);  // falseqDebug() << "Is testStr4 an integer?" << isInteger(testStr4);  // falsereturn 0;
}
判斷是否為浮點數
bool isFloat(const QString &str) {bool ok;return str.toDouble(&ok) && ok;
}int main() {QString testStr1 = "123.45";QString testStr2 = "-456.78";QString testStr3 = "123";QString testStr4 = "abc";qDebug() << "Is testStr1 a float?" << isFloat(testStr1);  // trueqDebug() << "Is testStr2 a float?" << isFloat(testStr2);  // trueqDebug() << "Is testStr3 a float?" << isFloat(testStr3);  // falseqDebug() << "Is testStr4 a float?" << isFloat(testStr4);  // falsereturn 0;
}

這兩種方法各有優缺點,使用正則表達式可以精確匹配字符串模式,而使用 QString 的轉換方法則更直觀和簡潔。選擇哪種方法取決于你的具體需求和偏好。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65043.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

搭建nginx文件服務器

方法一&#xff1a;通過docker方式搭建 1、創建一個nginx配置文件/etc/nginx/nginx.conf user nginx; worker_processes 1;error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid;events {worker_connections 1024; }http {include mime.types;default_typ…

練習題:37

目錄 Python題目 題目 題目分析 套接字概念剖析 通信原理分析 服務器 - 客戶端連接建立過程&#xff1a; 基于套接字通信的底層機制&#xff1a; 代碼實現 基于 TCP 的簡單服務器 - 客戶端通信示例 服務器端代碼&#xff08;tcp_server.py&#xff09; 客戶端代碼&a…

2017年IMO幾何預選題第7題

凸四邊形 A B C D ABCD ABCD 有內切圓 I I I, △ D A B \triangle DAB △DAB, △ A B C \triangle ABC △ABC, △ B C D \triangle BCD △BCD, △ C D A \triangle CDA △CDA 的內心分別為 I a I_a Ia?, I b I_b Ib?, I c I_c Ic?, I d I_d Id?. △ A I b I d \…

RabbitMQ案例

1. 導入依賴 <!--AMQP依賴&#xff0c;包含RabbitMQ--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 發送消息 注入RabbitTemplate Autowired RabbitT…

特殊數據類型的深度分析:JSON、數組和 HSTORE 的實用價值

title: 特殊數據類型的深度分析:JSON、數組和 HSTORE 的實用價值 date: 2025/1/4 updated: 2025/1/4 author: cmdragon excerpt: 隨著數據管理需求的多樣化,許多現代數據庫系統開始支持特殊數據類型,以滿足更多復雜應用場景的需求。在 PostgreSQL 中,JSON、數組和 HSTOR…

#滲透測試#漏洞挖掘#WAF分類及繞過思路

免責聲明 本教程僅為合法的教學目的而準備&#xff0c;嚴禁用于任何形式的違法犯罪活動及其他商業行為&#xff0c;在使用本教程前&#xff0c;您應確保該行為符合當地的法律法規&#xff0c;繼續閱讀即表示您需自行承擔所有操作的后果&#xff0c;如有異議&#xff0c;請立即停…

【Logstash02】企業級日志分析系統ELK之Logstash 輸入 Input 插件

Logstash 使用 Logstash 命令 官方文檔 https://www.elastic.co/guide/en/logstash/current/first-event.html #各種插件 https://www.elastic.co/guide/en/logstash/current/input-plugins.html https://www.elastic.co/guide/en/logstash/current/filter-plugins.html htt…

1.4 java反射機制 簡單的java反射機制實踐

這是一個項目用于學習反射 第一個demo是利用反射構建一個對象轉換為JSON 第二個demo是用于利用類的名字以及方法名就可以直接執行的實例 package com.zy.reflectiondemo.utils;import com.zy.reflectiondemo.annotation.JsonField;import java.lang.reflect.Field; import jav…

C#設計模式(行為型模式):觀察者模式

C#設計模式&#xff1a;觀察者模式&#xff0c;讓對象間通信更優雅 在軟件開發中&#xff0c;我們經常會遇到一個對象的狀態發生改變&#xff0c;其他對象需要自動更新或做出相應反應的場景。例如&#xff1a; GUI事件處理&#xff1a; 當用戶點擊按鈕時&#xff0c;按鈕需要…

【Vue】:解決動態更新 <video> 標簽 src 屬性后視頻未刷新的問題

問題描述 在 Vue.js 項目&#xff0c;當嘗試動態更新 <video> 標簽的 <source> 元素 src 屬性來切換視頻時&#xff0c;遇到了一個問題&#xff1a;即使 src 屬性已更改&#xff0c;瀏覽器仍顯示舊視頻。具體表現為用戶選擇新視頻后&#xff0c;視頻區域繼續顯示之…

BerOS 文件系統路徑歸一化問題及其 Python 實現

題目背景 本文將討論一道與操作系統路徑歸一化有關的問題&#xff0c;該問題來自 BerOS 文件系統 的設計。BerOS 是一個新型操作系統&#xff0c;其文件路徑系統允許路徑中的分隔符 / 重復出現。例如&#xff0c;以下路徑被視為等價的&#xff1a; /usr//local//nginx/sbin//…

Halcon 顯示異常

//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋轉 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …

window11 wsl mysql8 錯誤分析:1698 - Access denied for user ‘root‘@‘kong.mshome.net‘

&#x1f6a8; 錯誤分析&#xff1a;1698 - Access denied for user rootkong.mshome.net 這個錯誤是因為 MySQL 的 root 用戶 使用 auth_socket 插件進行身份驗證&#xff0c;而不是使用密碼。因此&#xff0c;當你嘗試從 遠程主機 連接時&#xff0c;MySQL 會拒絕訪問。 ? …

CentOS 7安裝Docker詳細教程

本文以 CentOS7.8 為例安裝 Docker 26.1.4 、Docker Compose、以及 Docker 鏡像倉庫。 安裝方式1&#xff1a;自動安裝(使用官方腳本) 使用官網一鍵安裝命令&#xff1a; curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 或 使用國內 daocloud 一鍵安…

Java:緩存:LinkedHashMap實現Lru

文章目錄 Lru源碼分析 ??????????????LinkedHashMap維護一個LinkedHashMapEntry<K,V>的雙向鏈表對LinkedHashMap的增刪查操作,也會對鏈表進行相同的操作并改變鏈表的鏈接順序小結使用方法??????????????應用總結Lru Least Recently Used,…

通過代理用戶功能可以實現生產用戶的應用滾動修改密碼

Oracle通過代理用戶功能可以實現生產用戶的應用滾動修改密碼。 測試例子&#xff1a; 生產用戶為jyc密碼為jyc 現在要求修改jyc的密碼為abc&#xff0c;意味著所有應用都得停止同時修改。 此時可以考慮新建代理用戶proxy_jyc&#xff0c;密碼為jyc1&#xff08;實際修改建議…

Git 倉庫與文件管理筆記

Git 的三種倉庫概念 本地倉庫 (Local Repository) 位于本地 .git 文件夾中通過 git init 或 git clone 創建存儲完整的項目歷史和分支信息 遠程倉庫 (Remote Repository) 位于 GitHub、GitLab 等平臺服務器使用 git remote -v 查看所有遠程倉庫默認遠程倉庫名通常為 origin 工…

【人工智能數據科學與數據處理】——深入詳解人工智能數據科學與數據處理之數據可視化與數據庫技術

深入詳解人工智能數據科學與數據處理 在人工智能&#xff08;AI&#xff09;的數據科學與數據處理中&#xff0c;數據可視化與數據庫技術是兩項至關重要的技能。本文將深入探討數據可視化中的可視化技巧及其應用&#xff0c;以及關系型數據庫&#xff08;如MySQL、PostgreSQL&…

DES密碼的安全性分析(簡化版本)

DES仍是世界上使用最廣的&#xff08;DES發行后20年&#xff0c;互聯網的興起&#xff0c;人們開始覺得DES不安全了&#xff0c;但DES的實現成本也越來越低&#xff09; 宏觀分析&#xff1a; 密鑰空間方面&#xff1a; 密鑰長度&#xff1a;DES 算法使用 56 位的密鑰對數據…

Elasticsearch 文檔批處理 混合處理 批量操作

介紹 在 Elasticsearch 中&#xff0c;批量操作&#xff08;Bulk API&#xff09;允許你一次執行多個文檔操作&#xff08;如索引、更新、刪除&#xff09;以提高效率。批量操作對于大規模數據的插入、更新或刪除尤其有用&#xff0c;可以顯著提高處理速度。 批量操作通常是通…