摘要
- 流迭代器提供了哪些成员函数
- 如何用流迭代器读写单独的数据项
- 什么是刘缓冲区迭代器流及其与迭代器的差别
- 如何使用流缓冲区迭代器读写文件
- 如何用流迭代器读写文件
- 什么是字符串流以及STL定义的不同类型的字符串流
- 如何对字符串流使用流迭代器和流缓冲区迭代器
详情
流迭代器
输入流迭代器
istream_iterator对象有下面这些成员函数:
- operator*()会返回一个流中当前对象的引用,可以运用这个运算符多次以重读相同的值.
- operator->()会返回流中当前对象的地址.
- operator++()会从底层输入六中读取一个值,并将它保存到一个迭代器对象中,返回一个迭代器对象的引用.
- operator++(int)会从底层输入流读取一个值,并将它保存到一个迭代器对象中,为使用operator*()或operator->()访问做准备。
#include <iostream>
#include <iterator>
int main()
{
}
输出流迭代器
输出流迭代器是由ostream_iterator模板定义的,这个模板的第一个模板参数是被写值得类型,第二个模板参数是流中字符的类型;
ostream_iterator类型定义了下面这些成员函数:
- 构造函数:第一个构造函数会用作为第一个参数的ostream对象的输出流生成一个开始迭代器,第二个参数是分隔符字符串。
- operator=(const T& obj)会将obj写到流中,然后写分隔字符串,前提是在构造函数中指定了一个。
- operator*()不做任何事,除了返回迭代器对象。
- operator++()和operator++(int)都被定义了但不做任何事,除了返回迭代器对象.
#include <iostream>
#include <iterator>
对文件使用流迭代器
文件流类的模板
文件流打开状态:
- binary:会将文件设置成二进制模式。如果没有设置二进制模式,默认的模式是文本模式。
- app:在每个写操作(append operation)之前会移动到文件的末尾。
- ate:会在打开文件之后(at the end),移到文件的末尾。
- in:打开文件来读。对于ifstream和fstream来说,这是默认的。
- out:打开文件来写。对于ostream和fstream来说,这是默认的。
- trune:将当前存在的文件长度截断为0。
用流迭代器进行文件输入:
todo
用流迭代器来反复读文件:
todo
用流迭代器输出文件:
todo
string流,流,以及流缓冲区迭代器
string流是表示内存中字符缓冲区中的I/O对象,是定义在sstream头文件中的3个模板中的一个模板实例:
- basic_istringstream:支持从内存中的字符缓冲区去读数据
- basic_ostringstream:支持写数据到内存中的字符缓冲区
- basic_stringstream:支持字符缓冲区上的输入和输出操作