vec; ifstream in(infile); string buf; while (getline(in, buf)) { vec.push_back(buf); } 我们创建了一个文件流in,然后在检查之后要读" />

小言_互联网的博客

第八章IO库习题心得

351人阅读  评论(0)

使用流完成文件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;

转载:https://blog.csdn.net/derlinst/article/details/101913473
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场