>在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:</P>+ s) G3 y5 x2 W4 U8 h
>1、插入器(<<)# u j+ W9 V4 K# R/ F8 W2 @
>2、析取器(>>)+ K. B7 ?/ x2 v6 ~5 F2 |
> 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。</P>
>一、打开文件& z A m$ ~- Z6 J9 E
>void open(const char* filename,int mode,int access);</P>+ N' H8 I- o# I7 g U1 F+ v0 z
>参数:</P>
>filename: 要打开的文件名
>ios::app: 以追加的方式打开文件 : }* q% b4 l' t' w7 ^$ }1 q
ut: 文件以输出方式打开 4 H2 M( b5 l& ^3 }+ y. s7 j, z. S7 a' |
ut|ios::binary</P>* k+ f# n" o9 B% G8 c. a
> 打开文件的属性取值是:</P>
>0:普通文件,打开访问
> 例如:以二进制输入方式打开文件c:\config.sys </P>
> fstream file1;9 \1 c7 W$ ]0 i! ^6 |
> 如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:</P>
> file1.open("c:\\config.sys");<=>file1.open("c:\\config.sys",ios::in|ios:
ut,0);</P>( ^3 N2 {- j5 d2 ^& h% o$ v( R
> 另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:</P>- w* W' D A( G& _
> fstream file1("c:\\config.sys");</P>
> 特别提出的是,fstream有两个子类:ifstream(input file stream)和ofstream(outpu file stream),ifstream默认以输入方式打开文件,而ofstream默认以输出方式打开文件。</P>+ m& }: a: j* Z O9 H' h2 G3 E
> ifstream file2("c:\\pdos.def");//以输入方式打开文件
> 所以,在实际应用中,根据需要的不同,选择不同的类来定义:如果想以输入方式打开,就用ifstream来定义;如果想以输出方式打开,就用ofstream来定义;如果想以输入/输出方式来打开,就用fstream来定义。</P>/ N4 f: k9 a/ n2 _* F, M0 i
>二、关闭文件
>三、读写文件8 t3 t8 S+ S1 A
> 1、文本文件的读写) r8 a1 X( G; x6 A8 A/ Z/ b- h
> file2<<"I Love You";//向文件写入字符串"I Love You"
> 这种方式还有一种简单的格式化能力,比如可以指定输出为16进制等等,具体的格式有以下一些</P>
>操纵符 功能 输入/输出 : F: B8 h* x* ]
> 比如要把123当作十六进制输出:file1<<hex<<123;要把3.1415926以5位精度输出:file1<<setpxecision(5)<<3.1415926。</P>2 G0 ]0 C7 ^* K5 C4 z1 R$ A% C
> 2、二进制文件的读写. ~5 N: T1 R! J6 T0 s
>②get()
> 一种就是和put()对应的形式:ifstream &get(char &ch);功能是从流中读取一个字符,结果保存在引用ch中,如果到文件尾,返回空字符。如file2.get(x);表示从文件中读取一个字符,并把读取的字符保存在x中。</P>| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |