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