C++ 流以及文件操作

文件输入输出

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
}

你可能感兴趣的:(C++)