没有运算符“ *”与C ++中的这些操作数匹配

时间:2019-02-10 19:08:14

标签: c++ operators

我必须编写一个程序,将用户的药品名称及其数量输入。然后,它必须使用给定值计算数量。但是,“ *”(乘法运算符)出现错误。错误在下面给出。

  

Error: no operator "*" matches these operands
  operator types are: std::string * int

请帮助我解决此问题。我还附加了我的代码,您还可以在其中清楚地看到error

#include <iostream>
#include <conio.h>
#include <string>


using namespace std;
void main()
{
    string med,quantity,panadol=0,piozer=0,burofen=0;

    cout << "Pharmacy Management System" ;

    cout << "\n Enter your Medicine Name : ";
    getline(cin,med);   

    cout << "\n Enter your Medicine Quantity : ";
    getline(cin,quantity);

    int a,b;

    if (med==panadol && med==burofen)
    {
        a= (quantity*2);
        cout << a;
    }
    if (med==piozer)
    {
        b= (quantity*14);
        cout << b;
    }
    getch();
}

3 个答案:

答案 0 :(得分:1)

您的代码中有一些基本的误解。您必须确定什么是变量,什么不是变量,并且当使用变量时,必须确定变量的类型。

您的代码中似乎存在三个基本错误

string med,quantity,panadol=0,piozer=0,burofen=0;

panadolpoizerburofen是用户输入时要查看的药物名称。因此,它们不应为变量,而应为字符串文字。像这样

if (med == "piozer")
{
    b= (quantity*14);
    cout << b;
}

请参见“ piozer”是字符串文字,并且上面的代码询问{​​{1}}是否等于“ piozer”。因此,删除med变量,并用字符串文字替换,与所有其他药物名称相同。这是您的piozer问题的解决方案。

第二个错误是invalid null operator应该是quantity。这很明显,您想乘以数量,如何乘以字符串?

第三个错误在这里

int

if (med == "panadol" && med == "burofen") 等于“ panadol”,med等于“ burofen”是不正确的。从逻辑上讲,一个变量不能同时等于两个不同的值。显然,您真正的意思是这个

med

如果if (med == "panadol" || med == "burofen") 等于“ panadol”或med等于“ burofen”,即,如果其中一个为真,则两个都不为真。

答案 1 :(得分:0)

Quantitystring2int。您无法*stringint在一起。

也许您想在stoiquantity

答案 2 :(得分:0)

您的变量quantity是一个字符串。由于尝试将字符串乘以数字而导致错误。与其使用应该用于检索字符串的函数getLine(),不如尝试执行以下操作:

cin >> quantity;