繁体   English   中英

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

[英]No operator “*” matches these operands in C++

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

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

请帮我解决这个问题。 我还附加了我的代码,在这里您还可以清楚地看到错误

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

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

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

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是一个string2是一个int 您不能*stringint一起使用。

也许您想stoi quantity

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

cin >> quantity;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM