c++ - 如何从多个正则表达式(C++)中只打印一个结果
问题描述
我正在尝试使用正则表达式进行搜索,通过忽略“long”和“tonne”之间的任何空格来查找“long tonne”之类的单词,我认为这对正则表达式来说是最好的。使用下面的代码,它将打印出每个转换后的输出,但我只尝试打印一个结果。前任。如果我输入 12 kg,我只希望我的结果打印转换为 lbs 的字符串。
到目前为止,我已经尝试过:
- 删除正则表达式后的半冒号
- 在 if 和正则表达式之后添加 { } 括号
通过在另一个项目中复制和粘贴来逐节运行代码(我觉得它是我遇到问题的正则表达式)
#include <iostream> #include <string> #include <regex> using namespace std; int main() { cout << "Enter your mass with unit: "; double earthMass; string unit; string tolower(unit); cin >> earthMass >> unit; regex kg("kg|kgs"); if (regex_match("kg", kg)) { double dKgToLb; dKgToLb = (earthMass * 2.20462); cout << "your converted mass is : " << dKgToLb << " lb" << endl; } regex pound("lb|lbs"); if (regex_match("lb", pound)) { double dLbToKg; dLbToKg = (earthMass * 0.453592); cout << "your converted mass is : " << dLbToKg << " kg" << endl; } regex longTonne("long\\s*tonne|lg\\s*tn"); if (regex_match("long tonne", longTonne)) { double dLongToShort; dLongToShort = (earthMass * 1.12); cout << "your converted mass is : " << dLongToShort << " sh tn" << endl; } regex shortTonne("short\\s*tonne|sh\\s*tn"); if (regex_match("short tonne", shortTonne)) { double dShortToLong; dShortToLong = (earthMass * 0.892857); cout << "your converted mass is : " << dShortToLong << " lg tn" << endl;} } else if (!cin.good()) { cerr << "your input is invalid\n"; return EXIT_FAILURE; } }
解决方案
推荐阅读
- docker - 让 `pipenv run` 运行多个命令
- html - 如果键盘显示,全屏背景自动调整大小
- python - 如何在 SymPy 中获取表达式的系数列表?
- gitlab-ci - 为什么 Gitlab CI docker build 标记问题
- python - SQLAlchemy 删除对象列表(与 bulk_save_objects 相对)
- python - Cython 能否进一步减少此函数的 Python 方法调用开销?
- excel - 在用户窗体中截断三个几乎相同的子?
- python - 如何解决构建中性网络的形状问题?
- java - 在 Java 中格式化日期时遇到问题
- .net - 如何在 F# 中按长度将 observable 拆分为块