c++程序,按照正则表达式提取文件中cur_pose:后面的三个数字(小数),这三个数以逗号相隔,并分别存储
时间: 2024-03-16 12:47:18 浏览: 91
IcoToCur:这个 c++ 控制台应用程序将 .ico 文件转换为 Windows 游标
可以使用正则表达式库 `regex` 来实现。
假设文件名为 `input.txt`,文件中包含多个 `cur_pose:` 开头的行,每行后面有三个小数,以逗号分隔。
以下是示例代码:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <regex>
int main() {
std::ifstream file("input.txt");
std::regex pattern("cur_pose:\\s*(-?\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+)");
std::smatch match;
std::string line;
while (std::getline(file, line)) {
if (std::regex_search(line, match, pattern)) {
double x = std::stod(match[1]);
double y = std::stod(match[2]);
double z = std::stod(match[3]);
std::cout << "x = " << x << ", y = " << y << ", z = " << z << std::endl;
}
}
return 0;
}
```
其中,`std::regex pattern("cur_pose:\\s*(-?\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+),\\s*(-?\\d+\\.\\d+)")` 是提取正则表达式的模式,可以分解为三个部分:
- `cur_pose:`:匹配行开头的 `cur_pose:`。
- `\\s*`:匹配零个或多个空格。
- `(-?\\d+\\.\\d+)`:匹配一个小数,可以包含负号。
`std::smatch match` 用于保存匹配结果,`match[1]`、`match[2]`、`match[3]` 分别表示第一个、第二个、第三个小数。
`std::stod` 可以将字符串转换为 double 类型的数值。
阅读全文