标准IO库

IO类型在三个独立的头文件中定义:iostream定义读写控制窗口类型,fstream定义读写已命名的文件类型,而sstream所定义的类型则用于读写存储在内存中的string对象

fstream和sstream里定义的每种类型都是从iostream头文件中定义的相关类型派生出来。


sstream      istringstream从string对象读取,由istream派生

     ostringstream写到string对象中,由ostream派生

     stringstream对string对象读写,由iostream派生


IO类型用于三种类型: 控制台、磁盘文件和字符串流。


IO对象不可复制或赋值,不存在存储流对象的vector或其他容器。

形参或返回类型也不能是流类型。必须传递该对象的指针或引用。

一般引用是非const的。


输出缓冲区的刷新

cout<<flush;       //刷新缓冲区,不加任何数据

cout<<ends;        //缓冲区中插入字符null,刷新缓冲区

cout<<endl;         //缓冲区插入换行符,刷新缓冲区


清除文件流状态一个范例:

 ifstream  input;
vector<string>::const_iterator  it = files.begin();
while(it != files.end()){
	input.open(it->c_str());
	if(!input)
		break;
 	while(input>>s)
		process(s);
	input.close();
	input.clear();
	++it;
}

这里的c_str()是将string类型对象转换成C风格的字符串,返回的指针指向const char类型数组。

该程序的clear函数调用必不可少,以这个为范例。


文件模式(模式是文件的属性而不是流的属性)

in 打开文件读操作
out 打开文件写操作,相当于out | trunc(打开的文件会被清空
app 每次写之前找到文件尾
ate 打开文件后立即将文件定位在文件尾(初始定位,第一次
trunc 打开文件时清空已存在的文件流
binary  二进制进行IO操作(文件以字节序列形式处理)

out、trunc和app只能用于指定与ofstream或fstream对象相连的文件。

in用于ifstream和fstream。

ate和binary用于所有的。

一个打开并检查输入文件的程序:

ifstream& open_file(ifstream& in, const string & file)
{
   in.close();
   in.clear();      			
   in.open(file.c_str());
   return in;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值