嵌入式课程chap6文件操作和异常_第1页
嵌入式课程chap6文件操作和异常_第2页
嵌入式课程chap6文件操作和异常_第3页
嵌入式课程chap6文件操作和异常_第4页
嵌入式课程chap6文件操作和异常_第5页
已阅读5页,还剩25页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件操作和异常第六章回顾输出流插入操作符<<,cout.put(),cout.write输出操纵符:进制问题,cout.setf()函数使用输入流提取操作符>>cin.get()cin.getline()输入操纵符目标文件输入文件输出异常处理文件输入/输出从文件读取和写入文件的过程获得流是使用文件的先决条件添加头文件fstream.h两个基本类ifstream

读取文件ofstream

写入文件文件输入/输出相关流类库iosistreamostreamiostreamifstreamofstreamfstream文件相关流流是一组字符或数据流的源或目的每个流都和一个特定的类相关ios类是流类层次结构的虚拟基类两种流输出流(允许写入或存储字符)输入流(允许读取或提取字符)三个流类ifstream类——用于文件输出(读取到内存)ofstream类——用于文件输入(从内存写到文件)fstream类——既可以读又可以写文件操作的基本步骤获得流,在创建流的时候应该将流和文件相关。使用流提取和流插入的符号>><<进行操作文件操作可以实现读取和写入字节/二进制数据块监测文件结尾输入流可以忽略字符支持随机访问文件流和控制台流是等效的,可以重用插入函数和提取函数文件输出——获得流打开文件方式一Ofstream

outfile(“temp.txt”);创建了一个ofstream类的对象Temp.txt是要写入的文件如果文件存在就删除现有文件如果文件不存在,就创造一个新文件还可以有其他的处理方式打开文件方式二ofstream

OpenFile;OpenFile.open(“cpp-home.txt”);文件输出——获得流void

main(){char

a[10],b[10];int

num;//ofstreamoutfile(“temp.txt”);//等效于下面2行。、、、//ofstream就是系统定义好的一个类,outfile是自定义的一个对象ofstream

outfile;outfile.open("temp.txt");outfile.write("aaa",strlen("aaa"));

//效果等同下面一句outfile<<"

"<<"aaa"<<""<<33; //加上""才能分开输入分开输出

outfile.close();}文件输出示例#include

<fstream.h>void

main(){char

*name

=

"QWERTY

POIUYT";int

age

=

49;float

salary

=

600.123f;ofstream

fout

(“TEST.TXT”);//或者c:\\test.txtfout

<<

"此行写入了

TEST.TXT

中\n";fout

<<

name

<<

"

"

<<

age

<<

"

"

<<

salary;fout.close();}文件输出——其他示例ofstream

从iostrearn

类派生且所有iostream操作都可以应用到一个ofstream类对象上例如char

ch

=

'

';ofstream

outFile

("a.txt");outFile.put(

'1'

).put(

')'

).put(

ch

);outFile

<<

"1

+

1

=

"

<<

(1

+

1)

<<

endl;向outfile

中插入1)

1

+

1

=

2文件输入——获得流istream包含为输入操作(流提取)定义的函数创建一个ifstream类的对象,使用流提取操作符(>>)读取来自该对象的输入ifstream

fin(“temp.txt”);创建了一个ifstream类的对象,打开test.txt进行读取文件输入示例(1)#include

<fstream.h>void

main

(){ifstream

fin

(“TEST.TXT”);//读取此文件的信息

char

line

[100];char

name

[50];int

age;float

salary;fin>>line;fin>>name>>age>>salary;cout<<line<<endl;cout<<name<<""<<age<<""<<salary<<endl;fin.

close();}文件输入示例(2)#include

<fstream.h>void

read(ifstream

&T){charch;while(!T.eof()){T.get(ch);cout

<<ch;}cout

<<

endl

<<

"--------"

<<

endl;}void

main(){ifstream

T("a.cpp");//每一个输入文件实例化一个ifstream类的对象

read(T);T.close();T.open("fa.cpp");read(T);T.close();}文件输入/输出fstream包含文件输入/输出中使用的类的定义#include

<fstream.h>在一个需要文件输入/输出的程序中每一个输出文件实例化一个ofstream类的对象每一个输入文件实例化一个ifstream类的对象ofstream对象的使用和cout对象完全一样ifstream对象的使用和cin对象是完全一样文件输入/输出——打开模式打开模式含义ios::out打开以进行写入ios::in打开以进行读取ios::ate在打开时查找到文件结尾ios::app追加到文件结尾ios::trunc如果文件存在则删除ios::nocreate如果文件不存在则打开失败ios::replace如果文件已存在则打开失败ios::binary打开一个二进制文件文件输入/输出示例打开一个文件并删除所有内容ofstream

fout("TEST.TXT");ofstream

fout("TEST.TXT",ios::out);ofstream

fout(“TEST.TXT”,ios::out|ios::trunc);//默认情况如果文件存在则删除打开一个文件并追加内容ofstream

fout("TEST.TXT",ios::app);打开一个文件进行二进制输出ofstream

fout("TEST.TXT",ios::binary);文件输入/输出示例fstream

f;f.open(“文件名”,打开方式)f.close()While(!f.eof()){//继续读取文件}//在输入的时候有用示例文件输入/输出示例#include

<fstream.h>void

main(){fstream

File("c:\\test.txt",ios::in

|

ios::out);File<<"Hi!";//将“Hi!”写入文件static

char

str[10];//当使用static时,数组会自动被初始化//即是被清空为零

File.seekg(ios::beg);//回到文件首部File

>>

str;cout

<<

str

<<

endl;File.close();}随机访问——两个管理读写位置的指针get和put指针分别指定读和写操作的当前位置get:从设备到内存,称之为读,管理输入的位置put:从内存到设备,称之为写,管理输出的位置每次执行输入或输出操作时,这两个指针都按一定顺序自动移动随机访问——两对管理指针的方法seekg()和tellg()函数可用来控制get指针seekp()和tellp()函数对put指针进行类似的操作seekg()和seekp(),用来在输入输出的时候随机定位使用tellg()和tellp()函数在文件中查找

get和put指针的当前位置随机访问示例——Seekg()和tellp()Seekg()的示例seekg()使用两个参数要移动的字节数文件中重定位指针时的参考位置Ifstream

fin;fin.seekg(10,ios::beg);//get指针在离文件头10个字节的位置Ios::beg——文件的开头

Ios::cur——文件指针的当前位置

Ios::end——文件的结尾tellg()的示例Ofstream

fout(“text.txt”,ios::ate);Cout<<fout.tellp();//打印写指针的位置二进制访问示例#include

<fstream.h>void

main(){fstream

File("test_file.txt",ios::out

|

ios::in

|

ios::binary);char

ch;ch='o';charch2;File.put(ch);//将ch的内容写入文件File.seekg(ios::beg);//定位至文件首部File.get(ch2);//读出一个字符cout<<ch2<<endl;//将其显示在屏幕上File.close();}tellg()函数示例#include

<fstream.h>void

main(){//假如我们已经在test_file.txt中存有“Hello”的内容ifstream

File("test.txt");char

arr[10];File.read(arr,7);//这里将返回7arr[7]='\0';cout<<arr;cout

<<

File.tellg()

<<

endl;File.close();}异常异常是在运行时发生的错误事件发生异常时,C++作出如下反应产生异常的函数产生系统定义的消息函数彻底终止函数可能跳过中间级别继续处理另一部分异常与错误异常是在执行程序的过程中出现的错误或异常情况(运行时)错误是指在编写和编译程序时存在的问题逻辑错误语法错误异常处理异常处理的实现为try块,也称为监视部分throw表达式,指示异常的种类抛出一个值,一个字符串或一个对象catch处理程序,在发生异常时执行异常处理示例#include

<iostream.h>int

main(){try{int

age;cout<<"请输入您的年龄:";cin>>age;if

(age>100

||

age<1)throw"年龄无效!";cout<<"throw语句之后"<<endl;}catch

(char

*msg){cout<<"错误!"<<msg

<<endl;}cout<<"catch处理程序之后"<<endl;return

0;}抛出一个异常对象#include

<iostream.h>class

AgeException{public:int

num;char

*description;AgeException(){num=1; description

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论