什么是http输出流?它的作用是什么?它的格式是什么?

如题所述

是一个逻辑现象,是http对外部设备的逻辑抽象
文件流:

fstream头文件中定义了三种支持文件IO的类型:
(1)ifstream, 由istream派生而来,提供读文件的功能;
(2)ofstream, 由ostream派生而来,提供写文件的功能;
(3)fstream, 由iostream派生而来,提供读写同一文件的功能.

fstream类型定义了两个自己的新操作:open, close.还定义了一个构造函数,其形参为
要打开的文件的文件名.

文件流对象的使用举例:
(1).以构造函数初始化流对象
string ifile("in.txt");
string ofile("out.txt");
ifstream infile(ifile.c_str());
ofstream outfile(ofile.c_str());
(2).用open函数将流捆绑到要计读写的对象
ifstream infile;
ofstream outfile;
infile.open("in");
outfile.open("out");

检查流
(1)文件打开是否成功
if(!infile)
{
cerr<<"error:onable to open input file:"<<ifile<<endl;
return -1;
}
(2)输出流是否可用
if(!outfile)...

将文件流与新文件重新捆绑
ifstream infile("in");
infile.close();//关闭流
infile.clear();//清除流的状态
infile.open("next");

文件模式

in
以读打开

out
以写打开

app
在每次打开之前找到文件尾

ate
打开文件后立即将文件定位在文件尾

trunc(truncated,意:被删节了的)
打开文件时清空已存在的文件流(即清空文件)

binary
以二进制模式进行IO操作

out, trunc, app :只能用于指定与ofstream 或 fstream对象关联的文件;
in :只能用于指定与ifstream 或 fstream对象关联的文件;
ate, binary :所有文件皆可.

ate:只在打开时有效,文件打开后将定位在文件尾.
binary:将文件以字节序列的形式处理,而不解释流中的字符.

默认情况:
(1)与ifstream流对象关联的文件将以in模式打开;
(2)与ofstream流对象关联的文件将以out模式打开,以out模式打开的文件会被清空,
丢弃该文件存储的所有数据;
(3)与fstream流关联的对象以in和out模式同时打开,此时文件不清空.如果打开fstream
所关联的对象时,只使用了out模式,而不指定in模式,则文件会清空已存在的数据.如果打开
文件时指定也trunc模式,则无论是否同时指定了in模式,文件同样会被清空.

模式是文件的属性而不是流的属性
每次打开文件时都会设置模式.

打开模式的有效组合

out
打开文件做写操作,删除文件中已有的数据

out | app
打开文件做写操作,在文件尾写入.

out | trunc
与out模式相同

in
打开文件做读操作

in | out
打开文件做读, 写操作,并定位于文件开头处

in | out | trunc
打开文件做读, 写操作,删除文件中已有的数据

上述所有模式组合都可以添加ate模式,对这些模式添加ate只会改变文件打开时的初始定位,在第一次读或与之前,将文件定位于文件末尾处.

文件的随机读/写
在缺少情况下,文件以写方式打开时,文件指针总是指向文件尾;以读方式打开时,文件指针总是指向文件首.并且总是每读几个字符,文件指针后移几个字符位置.
为了增加对文件访问的灵活性,C++在istream类和ostream类中定义了与在输入/输出流中随机移动文件指针相关的三对成员函数.其功能是:

(1)文件指针的随机偏移
istream & istream::seekg(streamoff, seek_dir);
ostream & ostream::seekp(streamoff, seek_dir);
C++中偏移量定义语句为:typedef long streamoff;
偏移参照位置:三种:beg(文件首), end(文件尾), cur(当前指针).
例:fstream f;
f.seekp(0, ios::beg);//将文件指针指向文件首.

(2)测试文件指针当前位置
原型为:
istream::tellg();
ostream::tellp();
例:
fstream f;
streampos pos = f.tellp();

(3)文件指针的绝对位移
文件指针绝对位移是给出文件指针的绝对地址.(从文件首算起)
C++中,文件指针绝对地址定义为streampos型.定义为:typedef long streampos;
函数原型:
istream & istream::seekg(streampos);
ostream & ostream::seekp(streampos);
使用举例:
streampos pos = f.tellp();
f.seekg(pos);
温馨提示:答案为网友推荐,仅供参考
相似回答