有一串字符串"TR1H1M_2KF_and_T1V1C_2KF_BSP.1.1.2_APP.1.1.16_ALL.swu",我要使用C++ 提取其中的APP版本号1.1.16,代码怎么写
时间: 2024-10-16 17:07:24 浏览: 29
要提取字符串 "TR1H1M_2KF_and_T1V1C_2KF_BSP.1.1.2_APP.1.1.16_ALL.swu" 中的 APP 版本号 "1.1.16",你可以使用 C++ 的标准库函数 `std::regex` 来进行正则表达式匹配。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <string>
#include <regex>
std::string extractVersion(const std::string& str) {
std::regex version_pattern(R"(APP\.(\d+)\.(\d+)\.(\d+))"); // 正则表达式模式匹配三位数字的版本号
std::smatch match;
if (std::regex_search(str, match, version_pattern)) { // 搜索并尝试匹配
return std::to_string(std::stoi(match[1])) + "." + std::to_string(std::stoi(match[2])) + "." + std::to_string(std::stoi(match[3])); // 构造完整的版本号
}
return ""; // 如果未找到匹配,返回空字符串
}
int main() {
std::string input = "TR1H1M_2KF_and_T1V1C_2KF_BSP.1.1.2_APP.1.1.16_ALL.swu";
std::string extracted_version = extractVersion(input);
std::cout << "Extracted version: " << extracted_version << std::endl;
return 0;
}
```
在这个代码中,我们定义了一个正则表达式 `version_pattern` 匹配 "APP." 后面的三个连续整数,然后通过 `std::regex_search` 函数查找输入字符串中是否存在这个模式,并将匹配到的部分转换为整数形式。
阅读全文