Я пытаюсь выполнить поиск с помощью регулярных выражений, чтобы найти такие слова, как "длинная тонна", игнорируя любые пробелы между "длинной" и "тонной", что, я думаю, было бы лучше всего для регулярных выражений.с кодом ниже, он будет распечатывать каждый преобразованный вывод, но я пытаюсь напечатать только один результат.ех.если я введу 12 кг, я бы хотел, чтобы мой результат печатал только преобразованную строку в фунты.
До сих пор я пытался:
- удалить точку с запятой после регулярного выражения
- добавить {} скобки до и после регулярного выражения
запускать раздел кода за разделом, копируя и вставляя в другой проект (я считаю, что это регулярное выражение, с которым у меня возникают проблемы)
#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;
}
}