写一个c++代码片段,从以下字符串中,提取整数456和123456:“[HDLC][456-123456] 66789 SnmpAgentManager::subAgentProcessThread”
时间: 2024-12-16 19:16:29 浏览: 19
在C++中,我们可以使用`std::regex`库来处理正则表达式并从中提取整数。假设字符串始终遵循类似的形式,即整数由数字组成并且之间没有任何特殊字符,你可以尝试以下代码:
```cpp
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string str = "[HDLC][456-123456] 66789 SnmpAgentManager::subAgentProcessThread";
// 定义正则表达式模式匹配整数
std::regex pattern("\\d+"); // 匹配连续的数字
// 使用smatch对象保存匹配结果
std::smatch matches;
if (std::regex_search(str, matches, pattern)) {
int num1 = std::stoi(matches[0]); // 提取第一个整数456
int num2 = std::stoi(matches[matches.size() - 1]); // 提取第二个整数123456
std::cout << "First integer: " << num1 << "\n";
std::cout << "Second integer: " << num2 << "\n";
} else {
std::cout << "No integers found in the string.\n";
}
return 0;
}
```
这个代码首先定义了一个正则表达式`\\d+`,表示匹配一个或多个连续的数字。然后它在给定的字符串中搜索这样的模式,并将找到的整数转换回整数值。
阅读全文