C++ 使用getline时出现错误:调用“getline(std::istream&,const string&)”时没有匹配的函数
我正在编写这段代码,它与cin>>partname一起工作;而不是使用getlinecin、partname;在showpart函数中,但仅适用于不带空格的名称。但是使用getlinecin,partname;它会产生一个错误 错误:对“getlinestd::istream&,const string&”的调用没有匹配的函数 我已经查看了类似的错误,但它们似乎没有帮助。感谢您查看此错误。包含而不是 此外: void showpart const不能是const,因为您更新了partname,这对于名为show something的函数来说是一个奇怪的活动 我怀疑您希望显示部件名,而不是更新它:C++ 使用getline时出现错误:调用“getline(std::istream&,const string&)”时没有匹配的函数,c++,getline,C++,Getline,我正在编写这段代码,它与cin>>partname一起工作;而不是使用getlinecin、partname;在showpart函数中,但仅适用于不带空格的名称。但是使用getlinecin,partname;它会产生一个错误 错误:对“getlinestd::istream&,const string&”的调用没有匹配的函数 我已经查看了类似的错误,但它们似乎没有帮助。感谢您查看此错误。包含而不是 此外: void showpart const不能是const,因为您更新了partname,这
也许只是想澄清一下:showpart应该是const-错误在方法的实现中。@MikaelH是的,我同意。尽管getpart函数当前使用的是cin>>partname,但我怀疑存在复制/粘贴错误。感谢您的澄清。我本想从getpart中编辑出来,但在showpart中编辑了。现在它按预期工作。很抱歉浪费了你的时间。@bredgenie不客气,你没有浪费我的时间。你的问题很清楚,我们都可以重现这个问题,所以你让人们很容易地提供帮助,而不浪费时间。
#include<iostream>
#include<cstring>
using namespace std;
class Inventory
{
private:
int partno;
string partname;
float cost;
void getpart()
{
cout<<"Enter the part number"<<endl;
cin>>partno;
cout<<"Enter the part name"<<endl;
cin>>partname;
cout<<"Enter the cost"<<endl;
cin>>cost;
}
public:
Inventory()
{
partno = 0;
partname = " ";
cost = 0.0;
}
Inventory(int pn,string pname,float c)
{
partno = pn;
partname = pname;
cost = c;
}
void setpart()
{
getpart();
}
void showpart() const
{
cout<<"Inventory details"<<endl;
cout<<"Part Number: "<<partno<<endl;
cout<<"Part Name: ";
getline(cin, partname);
cout<<"\nCost: "<<cost<<endl;
}
};
int main()
{
Inventory I1(1,"Resistor", 25.0), I2;
I2.setpart();
I1.showpart();
I2.showpart();
}
void showpart() const
{
cout<<"Inventory details"<<endl;
cout<<"Part Number: "<<partno<<endl;
cout<<"Part Name: "<<partname<<endl;
cout<<"Cost: "<<cost<<endl;
}