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);
示例:
#include <iostream> #include <sstream> #include <string> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main(int argc, char *argv[]) { int temp_int[5] = {1,2,3,4,5}; vector<int> vector_int; //array to vector copy(temp_int,temp_int+sizeof(temp_int)/sizeof(int),back_inserter(vector_int)); //vector to cout copy(vector_int.begin(),vector_int.end(),ostream_iterator<int>(cout," ")); cout<<endl; //vector to stringstream stringstream strm; copy(vector_int.begin(),vector_int.end(),ostream_iterator<int>(strm," ")); cout<<strm.str()<<endl; //stringstream to vector<string> vector<string> vector_string; copy(istream_iterator<string>(strm),istream_iterator<string>(),back_inserter(vector_string)); copy(vector_string.begin(),vector_string.end(),ostream_iterator<string>(cout," ")); cout<<endl; return 0; }输出如下:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
请按任意键继续. . .