我必须编写一个程序,将用户的药品名称及其数量输入。然后,它必须使用给定值计算数量。但是,“ *”(乘法运算符)出现错误。错误在下面给出。
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();
}
答案 0 :(得分:1)
您的代码中有一些基本的误解。您必须确定什么是变量,什么不是变量,并且当使用变量时,必须确定变量的类型。
您的代码中似乎存在三个基本错误
string med,quantity,panadol=0,piozer=0,burofen=0;
panadol
,poizer
和burofen
是用户输入时要查看的药物名称。因此,它们不应为变量,而应为字符串文字。像这样
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)
Quantity
是string
,2
是int
。您无法*
和string
和int
在一起。
也许您想在stoi
上quantity
?
答案 2 :(得分:0)
您的变量quantity
是一个字符串。由于尝试将字符串乘以数字而导致错误。与其使用应该用于检索字符串的函数getLine()
,不如尝试执行以下操作:
cin >> quantity;