Я новичок в кодировании. То, что я пытаюсь сделать, это калькулятор. То, что делает программа, берет весь ввод в виде строки и затем разбивает строку на части. Например, первая часть - это число,вторая часть - опоратор, а третья - другое число.
Итак, я создал простую функцию с именем (extract_number). Программа, кажется, компилируется без ошибок, но когда я даю ввод, такой как 55.5 + 66.5я получаю некоторую ошибку, как показано ниже,
завершается вызов после выброса экземпляра 'std :: invalid_argument'
what (): stod
Это приложение запросилоВремя выполнения, чтобы прекратить его необычным способом.Для получения дополнительной информации обратитесь в службу поддержки приложения.
Процесс вернул 3 (0x3) время выполнения: 8,003 с Нажмите любую клавишу для продолжения.
Вот мой код,
#include <iostream>
#include <string>
using namespace std;
double extract_number(string line,int &number_length)
{
string temp;
int start_length = number_length;
for(int counter = number_length;counter != line.length();counter++)
{
if((line[counter] >= '0' && line[counter] <= '9') || line[counter] == '.')
{
number_length++;
}else break;
}
for(int counter = start_length;counter != number_length;counter++)
{
temp[counter] = line[counter];
}
return stod(temp);
}
char extract_char(string line,int &number_length)
{
string temp;
char op;
for(int counter = number_length;counter != line.length();counter++)
{
number_length++;
if(line[counter] == '+' || line[counter] == '-' || line[counter] == '*' || line[counter] == '/')
{
op = line[counter];
break;
}
}
return op;
}
void header()
{
system("cls");
clog <<"\t\t C++ Calculator\n"<<endl;
clog <<"Enter Your Command/s: ";
}
int main()
{
int number_length;
string line;
char op;
double number,number2;
header();
while(true)
{
number_length = 0;
getline(cin,line);
number = extract_number(line,number_length);
cout << number_length <<endl;
op = extract_char(line,number_length);
cout << number_length <<endl;
number2 = extract_number(line,number_length);
cout << number << " "<< op << " " << number2 <<endl;
}
return 0;
}
Я буду рад, если кто-нибудь сможет дать мне решение этой проблемы.