微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

切换数量问题:切换数量不是整数,无法将basic_string'转换为'bool'

如何解决切换数量问题:切换数量不是整数,无法将basic_string'转换为'bool'

我正在尝试创建一个计算器,但这会发生.. 这是我的代码。请帮助我修复它并给出一些解释:

#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;
        }
    
    

}

这是编译代码时的错误之处,请修正此代码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"){

第一个问题是,您要求用户输入YesNo,但是您测试"yes""Yes""yes"不是同一字符串

第二个问题是,对相等性的检验是==而不是==用于分配,这与相等性测试不同。

,

这里有两个主要问题:

  1. 您要在交换机中提供std::string,这是不可能的。您只能将字符或整数传递给它。您可以将其转换为char类型。

  2. 在条件行中有一个逻辑错误(注意注释):

    if(d="yes") // it should be d == "yes"
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。