1、头文件<fstream>
头文件fstream定义了三个类型来支持文件IO:
ifstream :从一个给定文件读取数据
ofstream :向一个给定位文件写入数据
fstream:可以读取给定文件
这些类型提供的操作和cin和cout的是一样的。
可以用IO运算符(<< 和 >>)来读取文件,可以用getline来从一个ifstream读取数据
2、用fstream代替iostream&
在要求使用基类对象的地方,我们可用继承类型的对象来代替。这意味着一个iostream类型的引用(或指针)参数的函数,可以用一个对应的fstream(或sstream)类型来调用。也就是说,如果有一个函数接受一个ostream&的参数,我们可以在调用这个函数的时候传递给他一个ofstream对象,对istream&和ifstream也是类似的。
3、string流
sstream头文件定义了三个类型来支持内存IO,这些类型可以向string写入数据,从string读取数据,就像string是一个IO流一样。
istringstream:从一个string读取数据
ostringstream:向string写入数据
stringstream:既可以读也可以写
同样,sstream中定义的类型也继承自iostream头文件。当然,除了继承得来的特性,sstream还有自己的特性,如下:
1)sstream strm;
2)sstream strm(s); //可以用一个string对象直接初始化strm(实际上就是绑定一个string对象)
3)strm.str(); //返回strm所保存的string对象
4)strm.str(s); //将string s拷贝到strm中。返回void
4、使用istringstream
1
2
3
4
5
6
7
|
string line,word;
//定义两个string对象,line保存一行string,word用来遍历一行string的以空格为分隔符的子string
while
( getline(cin,line) )
{
stringstream record(line);
//将记录绑定到刚刚读到的行line
while
(record >> word)
use word;
//在这里使用word
}
|