c++程序,按照正则表达式提取文件中cur_pose:后面的三个数字(小数),这三个数以逗号相隔,并分别存储。文件里的数据是这样的:[2023-05-30 14:58:54 I] cur_pos:0.005,-1.004000,90
时间: 2024-03-16 08:47:55 浏览: 88
文件指针-C++程序设计(谭浩强完整版)
可以使用正则表达式配合C++中的regex库来提取文件中的数字。以下是一个示例代码:
```c++
#include <iostream>
#include <fstream>
#include <regex>
#include <string>
using namespace std;
int main() {
ifstream file("file.txt"); // 打开文件
string line;
regex pattern("cur_pos:(-?\\d+\\.\\d+),(-?\\d+\\.\\d+),(-?\\d+\\.\\d+)"); // 定义正则表达式
smatch matches; // 用于存储匹配结果
if (file.is_open()) {
while (getline(file, line)) { // 逐行读取文件
if (regex_search(line, matches, pattern)) { // 进行匹配
// 第一个匹配项是整个字符串,我们只需要后面的三个匹配项
float x = stof(matches.str(1));
float y = stof(matches.str(2));
float z = stof(matches.str(3));
cout << "x: " << x << ", y: " << y << ", z: " << z << endl;
}
}
file.close(); // 关闭文件
} else {
cout << "Unable to open file" << endl;
}
return 0;
}
```
上述代码中,我们首先打开文件,然后逐行读取文件内容。对于每一行,我们使用正则表达式进行匹配,如果匹配成功,就提取出三个数字并分别存储。注意,由于数字可能为负数,因此我们在正则表达式中加入了符号“-”。同时,为了匹配小数,我们使用了“\\d+\\.\\d+”这样的模式。最后,我们使用stof函数将匹配到的字符串转换为浮点数并输出。
阅读全文