c++一个关于流迭代器的问题,求助!!
vector<Student>Result;里面已有元素ofstreamf1("by_id.txt");ostream_iterator<Student>os1(f1,"...
vector<Student> Result;里面已有元素
ofstream f1("by_id.txt");
ostream_iterator<Student>os1(f1,"\n");
copy(Result.begin(),Result.end(),os1);
错误 1 error C2679: 二进制“<<”: 没有找到接受“const Student”类型的右操作数的运算符(或没有可接受的转换)
这是什么错误啊,求救!! 展开
ofstream f1("by_id.txt");
ostream_iterator<Student>os1(f1,"\n");
copy(Result.begin(),Result.end(),os1);
错误 1 error C2679: 二进制“<<”: 没有找到接受“const Student”类型的右操作数的运算符(或没有可接受的转换)
这是什么错误啊,求救!! 展开
1个回答
展开全部
1、原因:程序调用方法copy(...)时,自动使用模板流ostream的操作符“<<”将数据输出到指定流f1中;然而在模板流ostream中,操作符“<<”并未重载针对Student的数据类型的输出方法,因此报告错误C2679。
2、模板流ostream操作符“<<”只定义了针对基本数据类型,如int、short、float、double、char *,等的输出方法,所以自定义的数据类型无法输出。比如:
cout << Student; // 编译失败
cout << i; // 编译成功,i为int变量
3、如果要完成将Student的内容输出到磁盘文件中,一个简单的方法是,将Student中的每一个基本数据类型成员逐一输出。
2、模板流ostream操作符“<<”只定义了针对基本数据类型,如int、short、float、double、char *,等的输出方法,所以自定义的数据类型无法输出。比如:
cout << Student; // 编译失败
cout << i; // 编译成功,i为int变量
3、如果要完成将Student的内容输出到磁盘文件中,一个简单的方法是,将Student中的每一个基本数据类型成员逐一输出。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询