c++STL中vector数组用std::copy写入文件中提示错误

//STLTest.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include"iostream"#include"fstream"#i... // STLTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include"iostream"
#include"fstream"
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
class Information
{
private:
char name[10];
unsigned year;
char sex;
double high;
double mark;
public:
Information(){}
friend ostream& operator<<(ostream &os, Information &c);
void Name(){ cin.getline(name, 10, ' '); }
void Year(){ cin >> year; }
void Sex(){ cin >> sex; }
void High(){ cin >> high; }
void Mark(){ cin >> mark; }
};
ostream& operator<<(ostream &os, Information &c)
{
os << "姓名:" << c.name << " 性别:" << c.sex << " 年龄" << c.year << " 身高" << c.high << " 分数" << c.mark << endl;
return os;
}
int _tmain(int argc, _TCHAR* argv[])
{
Information Temp;
vector<Information>T;
string name = "学生信息.txt";
fstream fp(name, ios::out | ios::app);
if (!fp)
{
cout << "文件不存在!" << endl;
exit(0);
}
cout << "Please input the Information of students!:";
while (getchar() != '#')
{
cout << "Please input the name of students!:";
Temp.Name();
cout << "\nPlease input the sex of students!:";
Temp.Sex();
cout << "\nPlease input the years of students!:";
Temp.Year();
cout << "\nPlease input the high of students!:";
Temp.High();
cout << "\nPlease input the mark of students!:";
Temp.Mark();
T.push_back(Temp);
}
copy(T.begin(), T.end(), ostream_iterator<Information>(fp));
fp.close();
return 0;
}错误 1 error C2679: 二进制“<<”: 没有找到接受“const Information”类型的右操作数的运算符
代码如上 编译时候总是提示
展开
 我来答
百度网友67c96c27d
2015-08-22
知道答主
回答量:6
采纳率:0%
帮助的人:6.5万
展开全部
ostream& operator<<(ostream &os, Information &c)

修改成

ostream& operator<<(ostream &os, const Information &c)

试试

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式