资源预览内容
第1页 / 共87页
第2页 / 共87页
第3页 / 共87页
第4页 / 共87页
第5页 / 共87页
第6页 / 共87页
第7页 / 共87页
第8页 / 共87页
第9页 / 共87页
第10页 / 共87页
亲,该文档总共87页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八章 C+ I/O流标准库,本章内容,C+ I/O流概述 输出流 输入流 格式化输入输出,什么是流?,从一个地方流到另一个地方,如水流、河流iostreams 是同样的概念, 是从一个地方流到另一个地方的数据流I/O流:数据在外部设备和内存之间的流动,Data Stream(数据流),data stream,data,Just like a real stream you can put things in it and they will flow in a direction,Data Stream (数据流),data stream,data,data,Data Stream (数据流),“流”(stream)实际上是一个字节序列(字节流),C+的输入/输出是以字节流的形式实现的。,输入流与输出流,输入流 与输入设备(如键盘)相联系的流输出流 与输出设备(如屏幕)相联系的流输入/输出流 与输入/输出设备相联系的流,输入流,从输入流中获取数据的操作称为输入、读或提取操作,由外部设备流向内存的数据流,例:cin i j; 12 15 cin ,键盘,提取运算符,输出流,由内存流向外部设备的数据流。,内存,屏幕 打印机 磁盘文件,将数据放入输出流的操作称为输出、写或插入操作。,例: cout “Hello World!n“;cout “Hello World!n“,内存,运算符 ,istream,open(fname) close( ) eof( ),cin 是 istream 类的对象,继承(inheritance),ifstream, ,istream,open(fname) close( ) eof( ),ostream,ofstream,open(fname) close( ) eof( ), setw(n) ,ifstream 和 ofstreams 来于 fstream library,cin,cout,文件操作步骤,对于文件操作要做以下事情打开文件用于读和写 检查打开是否成功 读或写 检查是否读完 使用完文件后要关闭文件,方法1:ofstream fout; /建立文件输出流对象 fout.open(“data.txt”, ios:out); /打开文件,使fout与文件关联,方法2:ofstream fout(“datatxt“, ios:out);,打开写文件,先定义ofstream(文件输出流)对象 然后调用open()成员函数打开一个文件,#include #include using namespace std;int main() ofstream fout; /建立ofstream对象 fout.open(“scores.txt“, ios:out); /打开文件/ 写两行fout “John“ “ “ 90 endl;fout “Eric“ “ “ 85 name score;cout name score;cout name “ “ score endl;fin.close();return 0; ,从文件中读取数据,检查文件打开成功与否?,检查文件打开成功与否有两种方法: 判断fail( )成员函数 如果fail( )= true 表明文件打开失败如果ifstream变量fin等于 false如果 fin = false 表明文件打开失败,如果 fail做什么?,选择之一是退出程序ifstream fin; / 建立 ifstream 变量fin.open(“myfile.txt”); / 打开文件if(fin.fail( ) /或if(!fin) 检查文件是否准备好 cout num; while ( ! fin.eof( ) ) total += num;fin num; ,检测文件尾,/ open file with fin int total = 0, num = 0; do total += num;fin num; while ( ! fin.eof( ) ) ;,检测文件尾,练习,打开名为infile.txt文件从文件读出若干整数并将整数之和在屏幕输出 将整数之平均值在屏幕输出,答案,#include #include #include using namespace std;int main( ) int num = 0, total = 0, count = 0;ifstream fin;fin.open( “infile.txt” );if( fin.fail( ) )cout num;while( ! fin.eof( ) ) count+; total += numfin num;if (count 0 ) cout “The numbers in infile.txt have an”;cout “Total: “ total endl;cout “Average: “ total / count 通常会跳过空白符(空格符制表符换行符以及转义字符),当遇到输入的数据类型有错或文件结束符时,读取工作将终止。所以不能读入带空格的字符串。 读入带空格的一行字符,需使用istream 中的getline 函数。,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号