首页 > 代码库 > 标准C++ I/O库 迭代器让数据自由流动
标准C++ I/O库 迭代器让数据自由流动
IO库的组成
三种流
C++的IO库以流对象为实体,主要有三种流:
(1)标准输入输出流 (2)文件输入输出流 (3)字符串输入输出流
<iostream> <fstream> <sstream>
iostream fstream stringstream
>> << >> << >> <<
istream ostream ifstream ofstream istringstream ostringstream
cin cout fin.open("file.txt") iss(string) oss.str()
ios::out
ios::out | ios::app
ios::in
流对象的状态
s.eof() //流结束状态,输入流中已经读完所有数据,再读一次就会是eof为true
s.fail() //变量转换失败clear(ios::failbit)
s.bad() //
s.clear() //所有状态重置为有效
流的迭代器
流迭代器用来写入流,或者从读流对象读数据,输入流迭代器使用strm>>t操作,将数据写到变量中,你看看>>操作符像不像箭头,这个箭头代表了数据的流向,C++作者说的,呵呵。同样输出流使用<<操作符,将变量的数据写到流中。
输入流迭代器 输出流迭代器
istream_iterator<T> iter_begin(strm),iter_end; ostream_iterator<T> iter_begin(strm),iter_end;/
以变量为单位,空白符将会被吃掉 以变量为单位,空白符将会被吃掉
istreambuf_iterator<char> iter_begin(strm),iter_end; ostreambuf_iterator<char> iter_begin(strm),iter_end;
以字符为单位,空白符将会按照一个单位处理 以字符为单位,空白符将会按照一个单位处理
数据的流动
copy(iter_from_begin,iter_from_end,iter_dest_begin);
<iterator> <iterator>
inserter(strm) //v.insert istream_iterator<T> iter_begin(strm),iter_end;
back_inserter(strm) //v.push_back istreambuf_iterator<char> iter_begin(strm),iter_end;
front_inserter(strm) //v.push_front
------------------------------------------------------> 数据 --------------------------------------------------->
容器 流对象
vector fstream
string sstream
list deque cin cout<---------------------------------------------------------- 数据 <----------------------------------------------------
v.begin() v.end() ostream_iterator<T> iter_begin(strm),iter_end;/
l.cbegin() l.cend() ostreambuf_iterator<char> iter_begin(strm),iter_end;
copy(iter_from_begin,iter_from_end,iter_dest_begin);
标准C++ I/O库 迭代器让数据自由流动