我正试图创建一个计算器,但发生了这种情况。。这是我的密码。请帮我修复它并给出一些解释:
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
string c;
string d;
cout<<"Enter No. 1: ";
cin>>a;
cout<<"Enter Operation: ";
cin>>c;
cout<<"Enter No. 2: ";
cin>>b;
cout<<"So you want me to solve this: ";
cout<<a<<c<<b;
cout<<"Type Yes or No";
cin>>d;
if(d="yes"){
switch(c)
{
case '+':
cout << a+b;
break;
case '-':
cout << a-b;
break;
case '*':
cout << a*b;
break;
case '/':
cout << a/b;
break;
}
}
else{
return 0;
}
}
这是编译代码时的eroor,请修复此代码ima noob:
main.cpp: In function ‘int main()’:
main.cpp:21:9: error: could not convert ‘d.std::basic_string<_CharT, _Traits, _Alloc>::operator=, std::allocator >(((const char*)"yes"))’ from ‘std::basic_string’ to ‘bool’
if(d="yes"){
~^~~~~~
main.cpp:22:17: error: switch quantity not an integer
switch(c)
错误表明,开关中的测试必须是一个整数,但您有一个字符串。
此外,您还会混淆多个字符的string
(例如"abc"(和单字符的char
(例如"a"、"b"或"c"(。
要修复使用,只需更改
string c;
至
char c;
这之所以有效,是因为c
中只需要一个字符,所以char
是合适的类型,也因为C++中的char
是一种整数,所以它可以在开关中使用。
你在这里有另一个错误
cout<<"Type Yes or No";
cin>>d;
if(d="yes"){
第一个问题是,您要求用户输入Yes
或No
,但您测试的"yes"
、"Yes"
和"yes"
不是同一个字符串。
第二个问题是相等性的测试是==
而不是=
。=
用于赋值,这与相等性测试不同。
这里有两个主要问题:
-
您在交换机中提供
std::string
,这是不可能的。您只能向其中传递字符或整数。您可以将其转换为char
类型。 -
在条件行中出现一个逻辑错误(注意注释(:
if(d="yes") // it should be d == "yes"