当前位置: 首页 > news >正文

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.lryc.cn/news/515434.html

相关文章:

  • Oracle sql developer and Toad for Oracle set start DBMS output
  • 【踩坑】SparkSQL union/unionAll 函数的去重问题
  • 域上的多项式环,整除,相通,互质
  • 计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习
  • Julia语言的学习路线
  • 对计网大题的一些指正(中间介绍一下CDM的原理和应用)
  • UGUI 优化DrawCall操作记录(基于Unity2021.3.18)
  • 前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)
  • es单机安装脚本自动化
  • Java 数据库连接 - Sqlite
  • CentOS — 目录管理
  • 【第二部分--Python之基础】04 函数
  • 我们公司只有3个人,一个前端,一个后端
  • 基于LabVIEW的BeamGage自动化接口应用
  • 【AI编辑器】Cursor与DeepSeek模型的集成:提升开发效率的新选择
  • vue2实现excel文件预览
  • STM32 和 ESP32
  • R语言中的时间序列分析·
  • QML学习(六) anchors锚点和坐标,以及anchors锚点的使用
  • BFS广度优先搜索详解
  • vue项目利用webpack进行优化案例
  • 如何单独安装 MATLAB 工具箱
  • 组网实训实现
  • openbmc sdk09.03 适配(一)
  • SQL使用存储过程
  • C语言----函数、指针、数组
  • 基于Java的敬老院管理系统的设计和实现【源码+文档+部署讲解】
  • 12306分流抢票软件 bypass v1.16.43 绿色版(春节自动抢票工具)
  • 【数据仓库】hadoop3.3.6 安装配置
  • 小试牛刀-SpringBoot集成SOL链