我是编码方面的新手,所以我想做的是一个计算器。程序要做的是将所有输入都作为字符串,然后将字符串分成几部分。例如,第一部分是数字,第二部分是主持人,第三部分是另一个数字。
所以,我创建了一个名为(extract_number)的简单函数。该程序似乎没有任何错误地进行编译,但是当我输入55.5 + 66.5之类的输入时,会出现如下错误,
在抛出'std :: invalid_argument'实例后调用terminate
what():站位
此应用程序已请求运行时以 不寻常的方式。请联系应用程序的支持团队以获取更多信息 信息。
进程返回3(0x3)执行时间:8.003 s按任意键 继续。
这是我的代码,
#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;
}
如果有人能为我提供解决方案,我会很高兴。
答案 0 :(得分:0)
您可以按照@Pete Becker的建议进行操作。或者,您可以在通话中添加“ + =“:
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 += line[counter];
}
return stod(temp);
}