第11类库与输入输出_第1页
第11类库与输入输出_第2页
第11类库与输入输出_第3页
第11类库与输入输出_第4页
第11类库与输入输出_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第11章流类库与输入/输出

流类和流对象

标准流和流对象

格式控制

文件处理C++语言没有输入/输出语句,但C++编译系统带有一个面向对象的输入/输出软件包,它就是I/O流类库。软件包有时称为库文件(.lib文件),类库是指用面向对象方法实现的软件包。I/O流的概念当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象。流是一种抽象,它负责在数据的生产者和数据的消费者之间建立联系,并管理数据的流动。程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作用。读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。1.1流类库

流库(streamlibrary)是用继承方法建立的输入输出类库

流库具有两个平行的基类:streambuf类和ios类,所有流类均以两者之一作为基类

streambuf类提供对缓冲区的低级操作

ios类及其派生类提供用户使用流类的接口1.1流类库2.ios提供用户接口iosistreamostreamiostreamfstreamstrstreamifstreamistrstreamofstreamostrstream输入流输出流输入文件流输入串流输出串流输出文件流输入/输出流输入/输出文件流输入/输出串流1.2头文件

iostream.h

包含操作所有输入/输出流所需的基本信息 含有cin、cout、cerr、clog对象,提供无格式和格式化的I/O

iomanip.h

包含格式化I/O操纵符,用于指定数据输入输出的格式

fstream.h

处理文件信息,包括建立文件,读/写文件的各种操作接口每种C++版本还包含其他一些与I/O相关的库,提供特定系统的某些功能

标准流是C++预定义的对象,提供内存与外部设备进行数据交互功能流的操作是流类的公有成员函数2标准流和流操作2.1标准流____________________内存____________________istreamcinostreamcout标准输入流标准输出流

标准流为用户常用的外部设备提供与内存之间的通信通道,对数据进行解释和传输,提供必要数据缓冲

2.1标准流(1)cin

istream类的对象,标准输入。(2)cout

ostream类的对象,标准输出,缓冲区满时被输出。(3)cerr

ostream类的对象,标准错误输出,没有缓冲,发送给它的内容立即被输出。(4)clog

ostream类的对象类似于cerr,但是有缓冲,缓冲区满时被输出。程序中只需包含<iostream>,可以直接使用这些对象,从键盘输入,向显示器输出。2.1标准流标准输入设备一般指键盘,标准输出设备一般指显示器,但可以在操作系统下修改为别的设备,比如,重定向为磁盘文件。流cerr和clog把信息输出到默认错误日志上,该日志通常是指显示器,不能重定向。//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)cerr<<"Zeroencountered.Themessagecannotberedirected.\n";elsecout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;cout<<"one:\n";cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)

cerr<<"Zeroencountered.Themessagecannotberedirected.\n";else

cout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;

cout<<"one:\n";

cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流不能重定向可以重定向//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)

cerr<<"Zeroencountered.Themessagecannotberedirected.\n";else

cout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;

cout<<"one:\n";

cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流cin,cout重定向方法把程序编译成.exe文件在DOS状态下以命令参数形式对标准流重定向//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)cerr<<"Zeroencountered.Themessagecannotberedirected.\n";elsecout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;cout<<"one:\n";cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流没有重定向运行//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)cerr<<"Zeroencountered.Themessagecannotberedirected.\n";elsecout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;cout<<"one:\n";cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流准备输入数据文件//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)cerr<<"Zeroencountered.Themessagecannotberedirected.\n";elsecout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;cout<<"one:\n";

cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流对cin重定向//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)cerr<<"Zeroencountered.Themessagecannotberedirected.\n";else

cout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;

cout<<"one:\n";cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流对cout重定向//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)

cerr<<"Zeroencountered.Themessagecannotberedirected.\n";elsecout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;cout<<"one:\n";cin>>m>>n;fn(m,n);

cerr<<"two:\n";fn(20,0);}10.2.1标准流cerr的输出//例11-1重定向的演示#include<iostream.h>voidfn(inta,intb){if(b==0)cerr<<"Zeroencountered.Themessagecannotberedirected.\n";elsecout<<a<<'/'<<b<<'='<<a/b<<endl;}voidmain(){intm,n;cout<<"one:\n";cin>>m>>n;fn(m,n);cerr<<"two:\n";fn(20,0);}10.2.1标准流cout的输出函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符istream&read(char*pch,intnCount);istream&read(unsignedchar*puch,intnCount);istream&read(signedchar*psch,intnCount);istream类的公有成员函数

2.2输入流操作

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符intget();istream&get(char*pch,intnCount,chardelim='\n');istream&get(unsignedchar*puch,intnCount,chardelim='\n');istream&get(signedchar*psch,intnCount,chardelim='\n');istream&get(char&rch);istream&get(unsignedchar&ruch);istream&get(signedchar&rsch);istream&get(streambuf&rsb,chardelim='\n');istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符istream&getline(char*pch,intnCount,chardelim='\n');istream&getline(unsignedchar*puch,intnCount,chardelim='\n');istream&getline(signedchar*psch,intnCount,chardelim='\n');istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符istream&ignore(intnCount=1,intdelim=EOF);istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符intpeek();istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符intgcount()const;istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符voideatwhite();istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符istream&seekg(streampospos);istream&seekg(streamoffoff,ios::seek_dirdir);istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符streampostellg();longintistream类的公有成员函数

istream类的公有成员函数

2.2输入流操作

函数功能read无格式输入指定字节数get从流中提取字符,包括空格getline从流中提取一行字符ignore提取并丢弃流中指定字符peek返回流中下一个字符,但不从流中删除gcount统计最后输入的字符个数eatwhite忽略前导空格seekg移动输入流指针tellg返回输入流中指定位置的指针值operstor>>提取运算符basic_istream&operator>>(basic_istream&(*pf)(basic_istream&));basic_istream&operator>>(basic_ios<E,T>&(*pf)(basic_ios<E,T>&));basic_istream&operator>>(ios_base<E,T>&(*pf)(ios_base<E,T>&));basic_istream&operator>>(basic_streambuf<E,T>*sb);basic_istream&operator>>(bool&n);basic_istream&operator>>(short&n);basic_istream&operator>>(unsignedshort&n);basic_istream&operator>>(int&n);basic_istream&operator>>(unsignedint&n);basic_istream&operator>>(long&n);basic_istream&operator>>(unsignedlong&n);basic_istream&operator>>(void*&n);basic_istream&operator>>(float&n);basic_istream&operator>>(double&n);basic_istream&operator>>(longdouble&n);//例11-2用get函数从键盘输入字符

#include<iostream.h>voidmain(){charc;cout<<"EnterfirstsentencefollowedbyEnter\n";while((c=cin.get())!='\n')cout.put(c);cout<<endl;cout<<"EntersecondsentencefollowedbyEnter\n";while(cin.get(c)){if(c=='\n')break;cout.put(c);}cout<<endl;cout<<"EnterthirdsentencefollowedbyEnter\n";chars[80];cin.get(s,10);cout<<s<<endl;}10.2.2输入流操作//例11-2用get函数从键盘输入字符#include<iostream.h>voidmain(){charc;cout<<"EnterfirstsentencefollowedbyEnter\n";while((c=

cin.get())!='\n')cout.put(c);cout<<endl;cout<<"EntersecondsentencefollowedbyEnter\n";while(cin.get(c)){if(c=='\n')break;cout.put(c);}cout<<endl;cout<<"EnterthirdsentencefollowedbyEnter\n";chars[80];cin.get(s,10);cout<<s<<endl;}输入10.2.2输入流操作//例11-2用get函数从键盘输入字符#include<iostream.h>voidmain(){charc;cout<<"EnterfirstsentencefollowedbyEnter\n";while((c=

cin.get())!='\n')cout.put(c);cout<<endl;cout<<"EntersecondsentencefollowedbyEnter\n";while(cin.get(c)){if(c=='\n')break;cout.put(c);}cout<<endl;cout<<"EnterthirdsentencefollowedbyEnter\n";chars[80];cin.get(s,10);cout<<s<<endl;}输出10.2.2输入流操作//例11-2用get函数从键盘输入字符#include<iostream.h>voidmain(){charc;cout<<"EnterfirstsentencefollowedbyEnter\n";while((c=cin.get())!='\n')cout.put(c);cout<<endl;cout<<"EntersecondsentencefollowedbyEnter\n";while(cin.get(c)){if(c=='\n')break;cout.put(c);}cout<<endl;cout<<"EnterthirdsentencefollowedbyEnter\n";chars[80];cin.get(s,10);cout<<s<<endl;}10.2.2输入流操作//例11-2用get函数从键盘输入字符#include<iostream.h>voidmain(){charc;cout<<"EnterfirstsentencefollowedbyEnter\n";while((c=cin.get())!='\n')cout.put(c);cout<<endl;cout<<"EntersecondsentencefollowedbyEnter\n";while(cin.get(c)){if(c=='\n')break;cout.put(c);}cout<<endl;cout<<"EnterthirdsentencefollowedbyEnter\n";chars[80];

cin.get(s,10);cout<<s<<endl;}指定输入字符数10.2.2输入流操作//例11-2用get函数从键盘输入字符#include<iostream.h>voidmain(){charc;cout<<"EnterfirstsentencefollowedbyEnter\n";while((c=cin.get())!='\n')cout.put(c);cout<<endl;cout<<"EntersecondsentencefollowedbyEnter\n";while(cin.get(c)){if(c=='\n')break;cout.put(c);}cout<<endl;cout<<"EnterthirdsentencefollowedbyEnter\n";chars[80];

cin.get(s,10);

cout<<s<<endl;}输出字符串10.2.2输入流操作函数功能put无格式,插入一个字节write无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream类的公有成员函数

2.3

输出流操作2.3

输出流操作函数功能put无格式,插入一个字节write从无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream&put(charch);ostream类的公有成员函数

2.3

输出流操作函数功能put无格式,插入一个字节write无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream类的公有成员函数

ostream&write(constchar*

pch,intnCount);ostream&write(constunsignedchar*

puch,intnCount);ostream&write(constsignedchar*

psch,intnCount);2.3

输出流操作函数功能put无格式,插入一个字节write无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream类的公有成员函数

ostream&flush();2.3

输出流操作函数功能put无格式,插入一个字节write无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream类的公有成员函数

ostream&seekp(streampospos);ostream&seekp(streamoffoff,ios::seek_dirdir);2.3

输出流操作函数功能put无格式,插入一个字节write无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream类的公有成员函数

streampostellp();2.3

输出流操作函数功能put无格式,插入一个字节write从无格式,插入一字节序列flush刷新输出流seekp移动输出流指针tellp返回输出流中指定位置的指针值operstor<<插入运算符ostream类的公有成员函数

basic_ostream&operator<<(basic_ostream&(*pf)(basic_ostream&));basic_ostream&operator<<(basic_ios<E,T>&(*pf)(basic_ios<E,T>&));basic_ostream&operator<<(ios_base<E,T>&(*pf)(ios_base<E,T>&));basic_ostream&operator<<(basic_streambuf<E,T>*sb);basic_ostream&operator<<(const

温馨提示

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

评论

0/150

提交评论