|
发表于 2023-5-6 15:21:36
|
显示全部楼层
为了从这个QString中提取两个浮点数和一个整数,你可以使用Qt的QRegularExpression类。首先,你需要包含QRegularExpression的头文件。然后,可以使用正则表达式从QString中提取所需的数据。以下是一个简单的示例:
- #include <QCoreApplication>
- #include <QRegularExpression>
- #include <QString>
- #include <QDebug>
- int main(int argc, char *argv[])
- {
- QCoreApplication a(argc, argv);
- QString m = "SSLL:000001.12 ZZLL:000006488152 QQT:-1234.4";
- // 定义正则表达式
- QRegularExpression re(R"((?<=SSLL:)([\d.]+)\s+(?=ZZLL:)(\d+)\s+(?=QQT:)([-\d.]+))");
- QRegularExpressionMatch match = re.match(m);
- if (match.hasMatch()) {
- double floatValue1 = match.captured(1).toDouble(); // 提取第一个浮点数
- int intValue = match.captured(2).toInt(); // 提取整数
- double floatValue2 = match.captured(3).toDouble(); // 提取第二个浮点数
- qDebug() << "First float value:" << floatValue1;
- qDebug() << "Integer value:" << intValue;
- qDebug() << "Second float value:" << floatValue2;
- } else {
- qDebug() << "No match found!";
- }
- return a.exec();
- }
复制代码
在这个示例中,正则表达式首先匹配字符串中的"SSLL:",然后捕获后面的浮点数。接着,它匹配"ZZLL:",然后捕获后面的整数。最后,它匹配"QQT:",然后捕获后面的浮点数。一旦正则表达式匹配成功,我们将捕获的数据转换为相应的数据类型(浮点数或整数)并打印到控制台。
这个示例应该适用于你的问题,只要QString的格式保持相对一致。 |
|