2

我不知道为什么会出现此编译错误。我尝试了通常的方法来定义字符串,我也尝试了 std::string 但都没有奏效。另外我认为我尝试打印该功能的方式可能存在问题。

#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <string>

float userInput1() // Defines the inputs from the user
{
using namespace std;
    cout << "Please enter first number" << endl;
    float number1;
    cin >> number1;

    return number1;
}

float userInput2() // Defines the inputs from the user
{
using namespace std;
    cout << "Please enter second number" << endl;
    float number2;
    cin >> number2;

    return number2;
}

std::string getOperation()
{
using namespace std;
    cout<<"Please enter the operator. + - * /" << endl;
    std::string userOperator;
    cin>>userOperator;

    return userOperator;
}

float computeValue(float value1, float value2, std::string operation)
{
using namespace std;

    if(operation == '+')
    {
        cout<< value1 + value2<< endl;
    }else if(operation =='-')
    {
        cout<< value1 - value2<< endl;
    }else if(operation =='*')
    {
        cout<< value1 * value2<< endl;
    }else if(operation == '/')
    {
        cout<< value1 / value2<< endl;
    }else
    {
        cout<< "Please enter: + - * /"<< endl;
    }
    return 0;
}


int main(){
using namespace std;

    computeValue(userInput1(), userInput2(), getOperation());

return 0;
}
4

2 回答 2

1

问题是您正在将字符串对象与computeValue 函数中的字符进行比较。operator ==std 命名空间中没有 astd::string和 a的重载char,因此出现错误。

如果您只需要一个字符作为输入,您应该使用char而不是 a 。std::string

char getOperation()
{
    std::cout << "Please enter the operator. + - * /" << std::endl;
    char userOperator;
    std::cin >> userOperator;

    return userOperator;
}

您的参数还应采用char

float computeValue(float value1, float value2, char operation)
//                                              ^^^^
于 2013-06-26T01:17:18.867 回答
1

您正在使用运算符std::stringchar值进行比较==。标准库没有在这两种类型之间定义相等运算符。有效比较列表在这里:http ://www.cplusplus.com/reference/string/string/operators/

最简单的方法是使用而不是将char值转换为,如下所示:char*"'

 if(operation == '+')

变成

 if(operation == "+")
于 2013-06-26T01:17:58.170 回答