C++Primer_Chap08_IO库_List02_使用流文件对象_笔记

ifstream input( argv[1] );
ofstream output( argv[2] );
Sales_data total;
if(read( input, total))
{
	Sales_data trans;
	while( read( input, trans))
	{
		if(total.isbn() == trans.isbn() )
			total.combine( trans );
		else
		{
			print( output, total ) << endl;
			total = trans;
		}
	}
	print(output, total) << endl;
}
else
	cerr << "No data?!" << endl;

  再要求使用基类型对象的地方,我们可以用继承类型的对象来替代。即可以在形参为istream和ostream的地方传递fstream对象。

文件模式
in

以读方式打开

out 以写方式打开
app 每次写操作前均定位到文件末尾
ate 打开文件后立即定位到文件末尾
trunc 截断文件
binary 以二进制方式进行IO
   

  指定文件模式有以下限制:

  • 只可以对ofstream或fstream对象设定out模式
  • 只可以对ifstrean或fstream对象设定in模式
  • 只有当out也被设定时才可设为trunc模式
  • 只要trunc没被设定,就可以设定app模式。在app模式下,即使没有显式指定out模式,文件也总以输出方式打开
  • 默认情况下,即使没有指定trunc,以out模式打开的文件也会被截断(即打开文件的内容丢失)
  • ate和binary模式可用于任何类型的文件流对象。且可以和其他任何文件模式组合使用。

猜你喜欢

转载自blog.csdn.net/accumulating_mocai/article/details/83060900