stl regex捕获数字
时间: 2023-07-16 17:16:30 浏览: 81
可以使用正则表达式`\d+`来捕获数字。例如,下面的代码可以从字符串中获取第一个连续的数字,并将其存储在整数变量中:
```c++
#include <iostream>
#include <regex>
int main() {
std::string str = "abc123def";
std::regex r("\\d+");
std::smatch m;
if (std::regex_search(str, m, r)) {
int num = std::stoi(m[0]);
std::cout << "The number is: " << num << std::endl;
}
return 0;
}
```
输出结果为:
```
The number is: 123
```
如果要获取所有的数字,可以使用`std::regex_iterator`。例如,下面的代码可以从字符串中获取所有的数字,并将它们存储在一个`std::vector<int>`中:
```c++
#include <iostream>
#include <regex>
#include <vector>
int main() {
std::string str = "abc123def456ghi789";
std::regex r("\\d+");
std::sregex_iterator it(str.begin(), str.end(), r);
std::sregex_iterator end;
std::vector<int> nums;
while (it != end) {
int num = std::stoi(it->str());
nums.push_back(num);
++it;
}
std::cout << "The numbers are:";
for (int num : nums) {
std::cout << " " << num;
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
The numbers are: 123 456 789
```
阅读全文