华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十五讲 文件流与输出输入重载

華束师免大学数学科学学院 School of Mathematical Sciences,East China Normal University 第十五讲 文件流与输出输入重载 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 第十五讲 文件流与输出输入重载

输入输出流 在 C++中,所有的输入输出都通过“流”来描述。 D输入流: 数据流向程序(input) 一输出流:数据从程序中流出(output) ·具体实现方法:流类和流对象 口文件流类与文件流对象 口文件流对象与文件关联 口文件读写:文本文件与二进制文件 口重载输出输入运算符> http://math.ecnu.edu.cn/~jypan 2
http://math.ecnu.edu.cn/~jypan 2 输入输出流 文件流类与文件流对象 文件流对象与文件关联 文件读写:文本文件与二进制文件 重载输出输入运算符 > 在 C++ 中,所有的输入输出都通过“流”来描述。 ►输入流:数据流向程序 (input) ►输出流:数据从程序中流出 (output) ►具体实现方法:流类和流对象

C++I/O库中定义的流类 类名 作用 头文件 ios 抽象父类 iostream istream 通用输入流和其他输入流的父类 iostream ostream 通用输出流和其他输出流的父类 iostream 通用输入输出流和其他输入输出流的父类 ifstream 输入文件流类 fstream ofstream 输出文件流类 fstream 输入输出文件流类 ifstream istream ios iostream fstream ostream ofstream http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 类名 作用 头文件 ios 抽象父类 iostream istream ostream iostream 通用输入流和其他输入流的父类 通用输出流和其他输出流的父类 通用输入输出流和其他输入输出流的父类 iostream ifstream ofstream fstream 输入文件流类 输出文件流类 输入输出文件流类 fstream ios istream ostream ifstream ofstream iostream fstream 3 C++ I/O 库中定义的流类

文件流类 口文件流头文件:fstream #include 该头文件中定义了三个文件流类 ofstream 向文件写入数据 ifstream 从文件读取数据 fstream 既读又写 http://math.ecnu.edu.cn/-jypan 4
http://math.ecnu.edu.cn/~jypan 文件流头文件:fstream ► 该头文件中定义了三个文件流类 ofstream 向文件写入数据 ifstream 从文件读取数据 fstream 既读又写 #include 4 文件流类

创建文件流对象 fstream fstrm; /1创建一个文件流对象,未绑定到任何文件 fstream fstrm(fname); //创建一个文件流,并绑定到文件fname fstream fstrm(fname,mode); //创建文件流的同时指定文件的打开模式 这里的类fstream也可以是ifstream或ofstream ·如果用ifstream.,则对象所关联的文件只能读 ·如果用ofstream.,则对象所关联的文件只能写 http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan ► 这里的类 fstream 也可以是 ifstream 或 ofstream ► 如果用 ifstream,则对象所关联的文件只能读 ► 如果用 ofstream,则对象所关联的文件只能写 5 fstream fstrm; // 创建一个文件流对象,未绑定到任何文件 fstream fstrm(fname); // 创建一个文件流,并绑定到文件 fname fstream fstrm(fname, mode); // 创建文件流的同时指定文件的打开模式 创建文件流对象

文件流成员函数 口文件流对象基本操作(成员函数) fstrm.open(fname) /将文件流对象fstrm绑定到文件fname fstrm.close() /关闭与文件流对象fstrm绑定的文件 fstrm.is_open() //测试文件是否已顺利打开(且未关闭) ·将文件流对象关联到其它文件时,须先关闭已绑定的文件 ·文件流对象被释放时,close会被自动调用 http://math.ecnu.edu.cn/~jypan 6
http://math.ecnu.edu.cn/~jypan 文件流对象基本操作(成员函数) ► 将文件流对象关联到其它文件时,须先关闭已绑定的文件 ► 文件流对象被释放时,close 会被自动调用 6 fstrm.open(fname) // 将文件流对象 fstrm 绑定到文件 fname fstrm.close() // 关闭与文件流对象 fstrm 绑定的文件 fstrm.is_open() // 测试文件是否已顺利打开(且未关闭) 文件流成员函数

文件打开模式 ios::in /只读 ios:out //只写,若文件存在,则内容被清除 ios:app /追加,即每次写操作均定位到文件末尾 ios::ate //打开文件后立即定位到文件末尾 ios:Trunc //若文件存在,则清除文件中原有的内容 ios::binary//以二进制方式进行读写 输入输出方式是在i0s类中定义的 以上方式可以组合使用,用“I”隔开,如ios::out|ios:binary Pios::app通常与ios:out组合使用 http://math.ecnu.edu.cn/~jypan 7
http://math.ecnu.edu.cn/~jypan ► 输入输出方式是在 ios类 中定义的 ► 以上方式可以组合使用,用“ | ”隔开,如 ios::out|ios::binary ► ios::app 通常与 ios::out 组合使用 7 ios::in // 只读 ios::out // 只写,若文件存在,则内容被清除 ios::app // 追加,即每次写操作均定位到文件末尾 ios::ate // 打开文件后立即定位到文件末尾 ios::Trunc // 若文件存在,则清除文件中原有的内容 ios::binary // 以二进制方式进行读写 文件打开模式

文件打开模式(续) ·在缺省情形下,文件以文本方式打开 ●ifstream对象只能设定in模式,缺省为in ●ofstream对象只能设定out模式,缺省为out ●fstream对象可以设定in或/和out模式 建议使用fstream对象进行文件读写操作。 ifstream ifstrm; ofstream ofstrm; fstream fstrm; ifstrm.open("fname1");/以缺省方式打开 ofstrm.open("fname2",ios:out); fstrm.open("fname3",ios:out|ios:app); http://math.ecnu.edu.cn/~jypan 8
http://math.ecnu.edu.cn/~jypan ► 在缺省情形下,文件以文本方式打开 ► ifstream 对象只能设定 in 模式,缺省为 in ► ofstream 对象只能设定 out 模式,缺省为 out ► fstream 对象可以设定 in 或/和 out 模式 8 ifstream ifstrm; ofstream ofstrm; fstream fstrm; ifstrm.open("fname1"); // 以缺省方式打开 ofstrm.open("fname2", ios::out); fstrm.open("fname3", ios::out|ios::app); † 建议使用 fstream 对象进行文件读写操作。 文件打开模式(续)

文本文件操作 文本文件的写:>或getline char str1[20],str2[20]; fstream fstrm("fname.txt",ios:in); fstrm>>str1;/缺省以空格为结束符 fstrm.getline(str2,12); fstrm.close(); 我们是如何使用cin和cout的,就可以同样来使用文件流对象 http://math.ecnu.edu.cn/~jypan 9
http://math.ecnu.edu.cn/~jypan 文本文件的写:> 或 getline 9 fstream fstrm("fname.txt",ios::out); fstrm > str1; // 缺省以空格为结束符 fstrm.getline(str2,12); fstrm.close(); † 我们是如何使用 cin 和 cout 的, 就可以同样来使用文件流对象 文本文件操作

文本文件举例 ex15_fstream02.cpp #include #include using namespace std; const int N=1g;//读入数据个数 int main() char name[20]; ifstream pf("namelist.txt",ios:in); for(int i=0;iname;/以空格为结束符(数据分隔符) cout <<i+1<"."<<name<<endl; return 0; http://math.ecnu.edu.cn/~jypan 10
http://math.ecnu.edu.cn/~jypan 10 #include #include using namespace std; const int N = 10; // 读入数据个数 int main() { char name[20]; ifstream pf("namelist.txt", ios::in); for(int i=0; i> name; // 以空格为结束符(数据分隔符) cout << i+1 << "." << name << endl; } return 0; } ex15_fstream02.cpp 文本文件举例
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十四讲 多态.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十三讲 继承与派生.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十二讲 运算符重载与自动类型转换.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ vector使用方法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十一讲 类与对象(III)面向对象提高.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十讲 类与对象(II)面向对象进阶.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第九讲 类与对象(I)面向对象基础.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第八讲 排序算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第七讲 输入输出与(C 语言)文件操作.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Pointers and Memory.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)内存分配——栈和堆.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Fast and stable matrix multiplication.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)Gauss消去法求解线性方程组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)矩阵乘积快速算法——Strassen 算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第六讲 指针.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(二)字符数组(字符串).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(一)数值数组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第四讲 函数.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分的近似计算(数值积分).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分数值计算.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十六讲 标准模板库(Standard Template Library,STL).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ Reference Card(C++ RC by Greg Book,2002).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ RC by Mississippi State U.(2009).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)ASCII码(256完整版)The ASCII Character Set.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)ASCII 码——常用ASCII码.pdf
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Introduction(主讲:苏锐丹).pptx
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Operating-System Structure.pptx
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Processes.pptx
- 《移动互联网技术》课程教学资源(培训教材)Cisco Press - Building the Mobile Internet(Mark Grayson, Kevin Shatzkamer, Klaas Wierenga).pdf
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)01 课程介绍(主讲:苏锐丹).ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)02 移动互联网概述.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 移动互联网技术(Android安全).ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 Android应用安全 Android application security.pptx
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 传输层移动性.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 应用层移动性.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 相关支撑技术.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)04 数据链路层移动性技术.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)05 网络层Mobility.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)06 移动互联网IPv6.ppt
- 兰州交通大学:《单片机原理与接口技术》课程教学资源(教案讲义,打印版)实验教学大纲.pdf