1 / 21

文件操作和异常

第六章. 文件操作和异常. 回顾. 输出流 插入操作符 输出操纵符 输入流 提取操作符 输入操纵符. 目标. 文件输入 文件输出 异常处理. 文件输入 / 输出. 从文件读取和写入文件的过程 需要添加头文件 fstream.h 两个基本类 ifstream 读取文件 ofstream 写入文件. 文件输出 3-1. 流是一组字符或数据流的源或目的 两种流 输出流(允许写入或存储字符) 输入流(允许读取或提取字符) 输出流与 ostream 类相关联. 文件输出 3-2. ios 类是流类层次结构的虚拟基类

latoya
Télécharger la présentation

文件操作和异常

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 文件操作和异常

  2. 回顾 • 输出流 • 插入操作符 • 输出操纵符 • 输入流 • 提取操作符 • 输入操纵符

  3. 目标 • 文件输入 • 文件输出 • 异常处理

  4. 文件输入/输出 • 从文件读取和写入文件的过程 • 需要添加头文件 fstream.h • 两个基本类 • ifstream 读取文件 • ofstream 写入文件

  5. 文件输出 3-1 • 流是一组字符或数据流的源或目的 • 两种流 • 输出流(允许写入或存储字符) • 输入流(允许读取或提取字符) • 输出流与 ostream 类相关联

  6. 文件输出 3-2 • ios类是流类层次结构的虚拟基类 • istream和ostream类从类ios派生而来 • 文件输出流是以文件为形式并链接到一个流

  7. 文件输出 3-3 • 三个提供文件输入/输出能力的流 • ifstream类 • 从istream类派生,用于文件输入(读取) • ofstream类 • 从ostream类派生,用于文件输出(写入) • fstream类 • 从iostream类派生,用于输入和输出

  8. 文件输出示例 #include <fstream.h> void main() { char *name = "QWERTY POIUYT"; int age = 49; float salary = 600.123f; ofstream fout ("TEST.TXT"); fout << "此行写入了 TEST.TXT 中\n"; fout << name << " " << age << " " << salary; fout.close(); }

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

  10. 文件输入示例 #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(); }

  11. 文件输入/输出 2-1 • fstream包含文件输入/输出中使用的类的定义 #include <fstream.h> • 在一个需要文件输入/输出 的程序中 • 每一个输出文件实例化一个ofstream类的对象 • 每一个输入文件实例化一个ifstream类的对象 • ofstream对象的使用和cout对象完全一样 • ifstream对象的使用和cin对象是完全一样

  12. 文件输入/输出 2-2

  13. 文件输入/输出示例 • 打开一个文件并删除所有内容 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);

  14. 随机访问 3-1 • get和put指针分别指定读和写操作的当前位置 • 每次执行输入或输出操作时,这两个指针都按一定顺序自动移动 • seekg( )和tellg( )函数可用来控制get指针 • seekp( )和tellp( )函数对put指针进行类似的操作

  15. 随机访问 3-2 • 使用tellg( )和tellp( )函数在文件中查找get和put指针的当前位置 • seekg( )使用两个参数 • 要移动的字节数 • 文件中重定位指针时的参考位置

  16. 随机访问 3-3 • 示例 1 ifstream iFil; iFil.seekg(10, ios::beg); • 示例 2 int position = iFil.tellg();

  17. 异常 • 异常是在运行时发生的错误事件 • 发生异常时,C++作出如下反应 • 产生异常的函数产生系统定义的消息 • 函数彻底终止 • 函数跳过中间级别继续处理另一部分

  18. 异常与错误 • 异常是在执行程序的过程中出现的错误或异常情况 • 错误是指在编写和编译程序时存在的问题 • 逻辑错误 • 语法错误

  19. 异常处理 • 异常处理的实现 • 为try块,也称为监视部分 • throw表达式,指示异常的种类 • catch处理程序,在发生异常时执行

  20. 异常处理示例 #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; }

  21. 总结 • 文件输入 • 文件输出 • 异常处理

More Related