没有找到接受“std::istream”“std::string”类型的左操作数的运算符

今天在运行如下代码时,遇到了这个错

没有找到接受“std::istream”类型的左操作数的运算符

#include <iostream>
#include <string>
using namespace std;
class People
{
private:
	string name;
	int age;
public:
	friend ostream & operator <<(ostream &output, const People &P)
	{
		output <<"Information:\n"<< "Name:" << P.name << "\n" << "Age:" << P.age;
		return output;
	}
	friend istream &operator>>(istream &input, const People &P)
	{
		cout << "Name:";
		input >> P.name;
		cout << "Age:";
		input>> P.age;
		return input;
	}
};
int main()
{
	People D;
	cin >> D;
	cout << D;
}

原因就是以下这句使用了const,const修饰后值是不能改变的,自然不能用cin>>来输入。所以应该去掉const

friend istream &operator>>(istream &input, const People &P)
	{
		cout << "Name:";
		input >> P.name;
		cout << "Age:";
		input>> P.age;
		return input;
	}

就可以正常运行~

#include <iostream>
#include <string>
using namespace std;
class People
{
private:
	string name;
	int age;
public:
	friend ostream & operator <<(ostream &output, const People &P)
	{
		output <<"Information:\n"<< "Name:" << P.name << "\n" << "Age:" << P.age;
		return output;
	}
	friend istream &operator>>(istream &input,  People &P)
	{
		cout << "Name:";
		input >> P.name;
		cout << "Age:";
		input>> P.age;
		return input;
	}
};
int main()
{
	People D;
	cin >> D;
	cout << D;
}

此外,出现
没有找到接受“std::string”类型的左操作数的运算符
的错误,要看看头文件是不是加了

#include <string>

注意不是string.h!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值