Я делаю калькулятор естественного языка в C++. Пользователь будет вводить строку строки для вычисления. Программа выберет номера и операцию и применит их соответственно. Ниже приводится часть моего кодаИзвлечение чисел из строки строки в C++
#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
string inp;
float n1,n2;
string s1,s2;
cout<<"Enter your string"<<endl;
getline(cin,inp);
stringstream ss;
ss.str(inp);
ss>>s1>>n1>>s2>>n2;
}
Программа будет работать успешно, если пользователь вводит в правильном формате т.е. добавить 2 и 3, вычесть 8 из 12 Но проблема в двух случаях
- Если пользователь входит в другой формат, например «7 плюс 6».
- Даже в правильном формате, но только одно число «квадратный корень из 25».
Есть ли решение, которое может извлекать поплавки независимо от положения или количества поплавков?
Благодаря
['find()'] (http://en.cppreference.com/w/cpp/string/basic_string/find) и ['substr()'] (http://en.cppreference.com/ w/cpp/string/basic_string/substr) – NathanOliver
@NathanOliver Huh? Что вы делаете, чтобы «найти()» точно? Каждая цифра одна за другой? – Barry
Вы должны, вероятно, читать каждое слово по одному и использовать конечный автомат. Таким образом, вы всегда будете знать, когда ожидается следующий номер. –