[英]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;
panadol
, poizer
和burofen
是用户要输入的药品名称。 因此,它们不应为变量,而应为字符串文字 。 像这样
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
是一个string
, 2
是一个int
。 您不能*
将string
和int
一起使用。
也许您想stoi
quantity
?
您的可变quantity
是一个字符串。 由于尝试将字符串乘以数字而导致错误。 与其使用应该用于检索字符串的getLine()
函数, getLine()
尝试执行以下操作:
cin >> quantity;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.