c输入输出Word格式文档下载.docx
《c输入输出Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c输入输出Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
![c输入输出Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/13/c2af1ac2-863e-43ec-8442-7d3b8585fab4/c2af1ac2-863e-43ec-8442-7d3b8585fab41.gif)
//与标准错误输出设备相关联的缓冲方式的标准输出流。
12.1.2流类库
C++的流类库有两个平行的基类streambuf和ios,其它的流类都是从这两个基类直接或间接派生的。
使用这些流类库时,必须包含相应的头文件。
ios类及其派生类为用户提供了使用流类的接口。
以下给出ios类及其派生类的层次结构图。
ios
istream
ifstream
istream_withassigniostream
istrstreamfstream
ostreamstrstream
ofstreamsdiostream
ostream_withassign
ostrstream
图12.1ios类的层次关系
12.2输入输出的格式控制
C++仍可使用C中的printf()和scanf()进行格式化控制,同时又提供了两种格式化控制的方法,一是使用ios类中的有关格式控制的成员函数,二是使用执行格式化输入/输出的格式控制符。
12.2.1用ios类的成员函数进行格式控制
使用这种方式进行格式控制主要是通过设置及清除格式状态标志、设置域宽、设置填充字符和设置输出精度的操作来完成的。
设置及清除格式状态标志
1格式状态标志
格式状态标志
说明
ios:
:
skipws
跳过输入中的空白,用于输入
left
左对齐输出,用于输出
right
右对齐输出,用于输出
internal
在符号和数值之间填充字符,用于输出
dec
转换基数为十进制,用于输入或输出
oct
转换基数为八进制,用于输入或输出
hex
转换基数为十六进制,用于输入或输出
showbase
输出时显示基指示符(0表示八进制,0x或0X表示十六进制),用于输入或输出
showpoint
输出时显示小数点,用于输出
uppercase
输出时表示十六进制的x为大写,表示浮点数科学计数法的e为大写,用于输出
showpos
正整数前显示“+”符号,用于输出
scientific
用科学表示法显示浮点数,用于输出
fixed
用定点形式显示浮点数,用于输出
unitbuf
在输出操作后立即刷新所有流,用于输出
stdio
在输出操作后刷新stdout和stderr,用于输出
图12.2格式状态标志
图12.2中的格式状态标志在类ios中被定义为枚举值,这些枚举元素的值的共同特点是,使状态标志字二进制表示中的不同位为1,它们共同组成状态标志字,存放在数据成员longx_flags中。
在设置格式状态时可以通过按位或(|)运算将多个标志选项组合在一个longint型的值中。
2设置状态标志
使用成员函数setf设置参数所指定的格式标志,并返回longint型的标志设置值。
一般调用形式为:
流对象.setf(格式状态标志);
3清除状态标志
使用成员函数unsetf清除指定的标志并返回清除前的标志值。
流对象.unsetf(格式状态标志);
4取状态标志
用成员函数flag,其不带参数时返回格式状态标志的当前设置(longint型值);
带参数时按参数指定的格式设置标志,返回以前的标志设置值。
流对象.flags();
流对象.flags(格式状态标志);
注意:
flags()与setf()的区别是:
setf()是在原有的基础上追加设置,不改变原有设置;
flags()使用新的设置覆盖原有的设置,改变了原有设置。
设置域宽
域宽是指输出字符的长度。
用成员函数width()完成域宽的设置。
一般调用形式为:
流对象.width();
流对象.width(intw);
说明:
5不带参数时返回当前的域宽值;
6带参数时将域宽值设置为w,并返回设置前的域宽值。
设置填充字符
当输出值长度小于域宽时将剩余部分用设定的填充字符填满,缺省的填充字符为空格。
用成员函数fill设置填充字符。
流对象.fill();
流对象.fill(charch);
说明:
7不带参数时返回当前的填充字符;
8带参数时将填充字符设置为ch,并返回设置前的填充字符。
9使用填充字符函数时,必须与设置域宽函数配合使用,否则没有意义。
设置输出精度
用函数precision()设置浮点数输出时的显示精度。
流对象.precision(intp);
12.2.2用格式控制符进行格式控制
预定义的格式控制符(在第二章中已介绍)。
自定义的格式控制符
为输出流自定义格式控制符的一般形式为:
ostream&
格式控制符名(ostream&
stream)
{
//自定义代码
returnstream;
}
为输入流自定义格式控制符的一般形式为:
istream&
格式控制符名(istream&
}
12.3输入与输出运算符的重载
定义运算符“<
<
”重载函数的一般形式为:
operator<
(ostream&
stream,类名对象名)
{
//操作代码
定义运算符“>
>
operator>
(istream&
stream,类名&
对象名)
}
重载输入/输出运算符函数只能为非成员函数,一般被定义为类的友元。
12.4文件操作
12.4.1创建文件流
在C++中进行文件操作,要包含<
fstream.h>
。
该头文件包括了ifstream(从文件输入)、ofstream(向文件输出)、fstream(从文件输入输出)流类的定义。
它们分别派生自istream、ostream、iostream。
建立文件流就是定义文件流类的对象。
如
ifstreamfin;
ofstreamfout;
fstreamfio;
建立了流以后,就可以把某一个流与文件建立联系,进行文件的读写操作了。
12.4.2文件的打开与关闭
可以在定义文件流对象的同时完成打开文件的工作,也可在定义文件流对象以后通过open()函数完成。
open()函数是上述三个流类的成员函数,定义在fstream.h头文件中。
函数原型为:
voidopen(constunsignedchar*,intmode,intdcces=filebuf:
openprot);
1第一个参数用来传递文件名;
2第二个参数的值决定文件打开的方式,必须从下列值中选取:
ios:
app//使输出追加到文件尾部,只用于输出
ate//查找文件尾
in//打开一个文件进行读操作,只用于输入
nocreate//文件不存在,导致open()失败
noreplace//若文件存在,则open()失败
out//打开一个文件进行写操作,只用于输出
trunc//删除同名文件
binary//以二进制方式打开文件,缺省为文本方式
以上各值可以组合使用,之间用“|”分开。
3第三个参数的值决定文件的访问方式及文件的类别。
一般情况下,ifstream和ofstream流类的析构函数就可以自动关闭已打开的文件,也可用函数close()关闭文件,它是流类中的成员函数,没有参数,没有发返回值。
12.4.3文件的读写
文件的顺序读写
1get()函数
函数原型:
istream&
get(unsignedchar&
ch);
作用:
它从流中每次读出一个字节或一个字符放入引用ch&
中。
2put()函数
put(charch);
它将一个字节或一个字符写入流中。
3read()函数
read(unsignedchar*buf,intnum);
从相应的流读出num个字节或字符的数据,把他们放入指针所指向的缓冲区中。
buf是一个指向读入数据存放空间的指针,num说明要读入数据的字节或字符数。
4write()函数
ostream&
write(constunsignedchar*buf,intnum);
从buf所指向的缓冲区把num个字节的数据写到相应的流中。
参数的含义、调用及注意事项与read()相同。
文件的随机读写
完成定位操作的函数如下:
1函数seekg()
isream&
seekg(streamoffoffset,seek_dirorigin);
用于输入文件,将文件的读指针从origin说明的位置移动offset个字节;
2函数seekp()
osream&
seekp(streamoffoffset,seek_dirorigin);
用于输出文件,将文件的写指针从origin说明的位置移动offset个字节。
origin的取值由三种情况:
ios:
beg从文件头开始,把文件指针移动由offset指定的距离。
cur从文件当前位置开始,把文件指针移动offset指定的距离。
end从文件尾开始,把文件指针移动由offset指定的距离。
3函数tellg()
streampostellg();
用于输入文件,确定文件当前指针的位置
4函数tellp()
streampostellp();
用于输出文件,确定文件当前指针的位置。
【典型例题】
例题1.在C++中,打开一个文件就是将一个文件与一个_________建立关联;
关闭一个文件就是取消这种关联。
解答:
C++的I/O系统是通过一种称为流的机制来实现文件和控制台的I/O操作。
简单地说,在C++中,输入输出操作是通过流来完成的。
而文件流以磁盘文件以及其他可按文件方式进行管理的外部设备为输入输出对象。
每个文件流都应当与一个打开的文件相联系;
关闭一个文件就是取消这种联系。
答案为:
流。
例题2.进行外交操作时需要包含()头文件。
(