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

No operator "*" matches these operands in C++

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

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();
}

Quantity 是一个 string2 是一个 int。你不能 * 一起 stringint.

也许您想 stoiquantity 上?

您的代码中存在一些基本的误解。你必须决定什么是变量,什么不是,当你使用一个变量时,你必须决定它是什么类型

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

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

panadolpoizerburofen 是您希望在用户输入时查看的药品名称。所以它们不应该是变量,它们应该是字符串文字。像这样

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

看到 "piozer" 是一个字符串文字,上面的代码询问 med 是否等于 "piozer"。所以删除 piozer 变量并替换为字符串文字,与所有其他药物名称相同。这是您 invalid null operator 问题的解决方案。

第二个错误是 quantity 应该是 int。这应该是显而易见的,你想乘以数量,你怎么乘以字符串?

第三个错误在这里

if (med == "panadol" && med == "burofen")

med 等于 "panadol" 和 med 等于 "burofen" 不可能是真的。一个变量同时等于两个不同的值在逻辑上是不可能的。很明显你真正的意思是这个

if (med == "panadol" || med == "burofen")

如果 med 等于 "panadol" 或 med 等于 "burofen",即如果其中一个为真,则两个都为真则不然。

您的变量 quantity 是一个字符串。由于您尝试将字符串乘以数字,因此出现错误。不要使用应该用于检索字符串的函数 getLine(),而是尝试像下面这样进行操作:

cin >> quantity;