c++ 正则表达式读取+lat_0=4.9000000000000000e+1 +lon_0=8.0000000000000000e+0中的4.9000000000000000e+1与8.0000000000000000e+0
时间: 2023-12-31 14:04:54 浏览: 154
C++正则表达式
4星 · 用户满意度95%
可以使用 C++ 中的正则表达式库 `regex`,先匹配出符合要求的子串,然后再将其转化为浮点数。
以下是一个示例代码:
```c++
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = "lat_0=4.9000000000000000e+1 +lon_0=8.0000000000000000e+0";
std::regex pattern("lat_0=(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)\\s+lon_0=(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)");
std::smatch matches;
if (std::regex_search(input, matches, pattern)) {
double lat = std::stod(matches[1]);
double lon = std::stod(matches[2]);
std::cout << "lat_0=" << lat << " lon_0=" << lon << std::endl;
}
return 0;
}
```
输出结果为:
```
lat_0=49 lon_0=8
```
其中正则表达式的含义为:
- `lat_0=` 匹配字符串 "lat_0="
- `(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)` 匹配一个浮点数,可能包含负号、小数点、指数符号等
- `\\s+` 匹配一个或多个空白字符
- `lon_0=` 匹配字符串 "lon_0="
- 后续部分与前面类似
具体解释可以参考 [regex 类型](http://www.cplusplus.com/reference/regex/regex/) 和 [正则表达式语法](http://www.cplusplus.com/reference/regex/ECMAScript/)。
阅读全文