第八章IO库习题心得

使用流完成文件IO

  • 从文件中读入数据存入Vector中
int main() {
 string infile = "1.txt";
 vector<string>vec;
 ifstream in(infile);
  string buf;
  while (getline(in, buf)) {
   vec.push_back(buf);
 }

我们创建了一个文件流in,然后在检查之后要读文件,给出了一个名为 1.txt的文件,这个文件的默认路径为源文件的文件夹内,需要把文件放入到默认位置才能读取。

  • 从一个vector中读取数据存进另外的文件中
string outfile = "2.txt";
 ofstream out(outfile, ofstream::app);
 for (auto a : vec)
  out << a << endl;

新加入的代码,我们只需要指定在源文件的文件夹下的文件,然后定义一个文件输出流并绑定即可。
然后复习以下几个常用的控制文件的打开方式的参数

名称作用
in只读文件
out写文件,并将原来文件内容覆盖
app每次写文件定位到文件末尾
trunc截断文件
binary以二进制进行IO

使用他们的时候,要ftream::app

  • 缓冲区的分割
    缓冲区在遇到空格的时候,认为此次的输入已经结束,然后进行下一次的输入,忽略掉中间的空格。
while (in>>buf) {
   vec.push_back(buf);
  }

就像这样(其他代码与上图的代码相同),in是与1.txt绑定的文件流,然后in把缓冲区的值依次赋给buf,然后完成传递。

使用流迭代器完成IO

  • 文件输入到vector
vector<string>vec;
string name="1.txt"//文件名
ifstream infile(name);//创建一个文件流对象,并与文件绑定
istream_iterator in(infile);//将流的初始位置给infile
istream_iterator end;
copy(in,end,back_inserter(vec));
  • 从vector输出到文件
string name="2.txt";
ofstream out(name);
ostream_iterator os(out," ");
for(auto a:vec)
	os=a;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值