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
是一个 string
,2
是一个 int
。你不能 *
一起 string
和 int
.
也许您想 stoi
在 quantity
上?
您的代码中存在一些基本的误解。你必须决定什么是变量,什么不是,当你使用一个变量时,你必须决定它是什么类型。
您的代码中似乎存在三个基本错误
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
是一个字符串。由于您尝试将字符串乘以数字,因此出现错误。不要使用应该用于检索字符串的函数 getLine()
,而是尝试像下面这样进行操作:
cin >> quantity;
我必须编写一个程序,将用户提供的药品名称及其数量作为输入。然后它必须计算给定值的数量。但是,“*”(乘法运算符)出现错误。错误如下。
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
是一个 string
,2
是一个 int
。你不能 *
一起 string
和 int
.
也许您想 stoi
在 quantity
上?
您的代码中存在一些基本的误解。你必须决定什么是变量,什么不是,当你使用一个变量时,你必须决定它是什么类型。
您的代码中似乎存在三个基本错误
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
是一个字符串。由于您尝试将字符串乘以数字,因此出现错误。不要使用应该用于检索字符串的函数 getLine()
,而是尝试像下面这样进行操作:
cin >> quantity;