配色: 字号:
C++ 文件和流如何从文件读取流和向文件写入流
2017-09-21 | 阅:  转:  |  分享 
  
C++文件和流:如何从文件读取流和向文件写入流需要用到C++中另一个标准库?fstream,它定义了三个新的数据类型:要在C++中
进行文件处理,必须在C++源代码文件中包含头文件。1、打开文件在从文件读取信息或
者向文件写入信息之前,必须先打开文件。ofstream?和?fstream?对象都可以用来打开文件进行写操作,如果只需要打开文件进
行读操作,则使用?ifstream?对象。下面是open()函数的标准语法,open()函数是fstream、ifstre
am和ofstream对象的一个成员。www.fzmajiang.comvoidopen(constcharfile
name,ios::openmodemode);在这里,open()?成员函数的第一参数指定要打开的文件的名称和位置,第二个参
数定义文件被打开的模式。您可以把以上两种或两种以上的模式结合使用。例如,如果您想要以写入模式打开文件,并希望截断文件,以防文件已存
在,那么您可以使用下面的语法:ofstreamoutfile;outfile.open("file.dat",ios::out
|ios::trunc);类似地,您如果想要打开一个文件用于读写,可以使用下面的语法:fstreamafile;afil
e.open("file.dat",ios::out|ios::in);2、关闭文件当C++程序终止时,它会自动关闭刷
新所有流,释放所有分配的内存,并关闭所有打开的文件。但程序员应该养成一个好习惯,在程序终止前关闭所有打开的文件。下面是close
()函数的标准语法,close()函数是fstream、ifstream和ofstream对象的一个成员。www.ti
qianzd.comvoidclose();3、写入文件在C++编程中,我们使用流插入运算符(<<)向文件写入信息,就像
使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里您使用的是?ofstream?或?fstream?对象,而不是?cout?对
象。4、读取文件在C++编程中,我们使用流提取运算符(>>)从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的
是,在这里您使用的是?ifstream?或?fstream?对象,而不是?cin?对象。5、读取&写入实例下面的C++程序
以读写模式打开一个文件。在向文件afile.dat写入用户输入的信息之后,程序从文件读取信息,并将其输出到屏幕上:实例#inc
lude#includeusingnamespacestd;intmain
(){chardata[100];//以写模式打开文件ofstreamoutfile;outfile.open("
afile.dat");cout<<"Writingtothefile"<ryourname:";cin.getline(data,100);//向文件写入用户输入的数据outfile<
>data;cin.igno
re();//再次向文件写入用户输入的数据outfile<le.close();//以读模式打开文件ifstreaminfile;infile.open("afile.dat")
;cout<<"Readingfromthefile"<>data;//在屏幕
上写入数据cout<>data;cou
t<译和执行时,它会产生下列输入和输出:$./a.outWritingtothefileEnteryourname:Zar
aEnteryourage:9ReadingfromthefileZara9上面的实例中使用了cin对象的附加函数
,比如getline()函数从外部读取一行,ignore()函数会忽略掉之前读语句留下的多余字符。6、文件位置指针istrea
m?和?ostream?都提供了用于重新定位文件位置指针的成员函数。这些成员函数包括关于istream的?seekg("see
kget")和关于ostream的?seekp("seekput")。seekg和seekp的参数通常是一个长整型。
第二个参数可以用于指定查找方向。查找方向可以是?ios::beg(默认的,从流的开头开始定位),也可以是?ios::cur(从流的
当前位置开始定位),也可以是?ios::end(从流的末尾开始定位)。文件位置指针是一个整数值,指定了从文件的起始位置到指针所在位
置的字节数。下面是关于定位"get"文件位置指针的实例://定位到fileObject的第n个字节(假设是ios:
:beg)fileObject.seekg(n);//把文件的读指针从fileObject当前位置向后移n个字节
fileObject.seekg(n,ios::cur);//把文件的读指针从fileObject末尾往回移n个字节fileObject.seekg(n,ios::end);//定位到fileObject的末尾fileObject.seekg(0,ios::end);
献花(0)
+1
(本文系调皮妹子呀1...首藏)