利用流迭代器读取文件

      今天学习了流迭代器,自己写了一个将文件的string数据读入的小程序,这里将输入流迭代器和输入文件流相绑定,然后通过判断输入流迭代器是否和结束迭代器相等来判断数据是否读取完毕,最后将这些数据存储在vector中,并将它们打印出来。。。

 

程序如下:

#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <iterator>

using namespace std;

ifstream& open_file(ifstream &in,const string &file)
{
 in.close();
 in.clear();
 in.open(file.c_str());
 return in;
}

int main(int argc,char **argv)
{
 ifstream infile;
 open_file(infile,argv[1]);
 istream_iterator<string> in_iter(infile);
 istream_iterator<string> eof;
 vector<string> vec(in_iter,eof);

 vector<string>::iterator iter=vec.begin();
 while (iter!=vec.end())
 {
  cout<<*iter++<<endl;
 }
 system("pause");
 return 0;
}

 

这里通过main的参数向程序传递读取文件的文件名,在调试的时候,我们在项目属性下的debugging选项卡的commad arguments后添加我们的文件名,同时要把文件添加到我们的项目文件夹中。。。

 

我们还可以结合输出流迭代器的使用,直接将通过输入迭代器读入的数据通过输出迭代器实现标准输出,这里我们要将输出流迭代器与输出流相绑定。。。修改程序如下:

 

#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <iterator>

using namespace std;

ifstream& open_file(ifstream &in,const string &file)
{
 in.close();
 in.clear();
 in.open(file.c_str());
 return in;
}

int main(int argc,char **argv)
{
 ifstream infile;
 open_file(infile,argv[1]);
 istream_iterator<string> in_iter(infile);
 istream_iterator<string> eof;
 ostream_iterator<string> out_iter(cout,"/n");
 while (in_iter!=eof)
 {
  *out_iter++=*in_iter++;
 }
 system("pause");
 return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值