C ++ストリームイテレータのエラーと分析(2番目のコード)

#include <iostream>
#include <string>
#include <iterator>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//first you read contents from a outside file
vector<int> vec;
ifstream in("file.txt");
if(!in) cout << "failure" << endl;
//else cout << "success " << endl;
	
istream_iterator<int> iter(in),eof;
while(iter != eof)
	vec.push_back(*iter ++);
for(auto i : vec)
	cout << i << " ";
cout << endl;
//second you will read a file from outside
ofstream of("output.txt");
ofstream of1("output2.txt");
ostream_iterator<int> out(of,"a elem\n");

ostream_iterator<int> out1(of1);
for(auto i : vec)
    out = i;
//copy(vec.begin(),vec.end(),out1);
ifstream inn("output.txt");
if(!inn) cout << "open a file failure." << endl;
istream_iterator<int> iter1(inn),eoff;
copy(iter,eoff,out1);
//为何out1不能完成工作???



    return 0;
}
#include <fstream>
#include <vector>
#include <iostream>
#include <string>
#include <list>
#include <algorithm>
#include <iterator>
#include <numeric>
using namespace std;
int main()
{
ifstream in("file.txt");
istream_iterator<int> iter(in),eof;
vector<int> vint;
//下一行的错误在于accumulate的第一个参数应该是istream_iterator类型,但是这里给了一个
//ifstream类型,我们这里应用的是流iterator,但是没有文件iterator这一说....
//这个错误真是太隐蔽了
int result = accumulate(in,eof,vint.begin());//为何提示没有匹配的函数?因为这里
cout << result << endl;
	return 0;
}

 

おすすめ

転載: blog.csdn.net/digitalkee/article/details/111823759