C程序设计(第二版)第九章流类库与输入输出
C程序设计教程与实训(第二版)第9章 文件
9.2 文件的打开和关闭
文件操作一般遵循以下步骤:
创建/打开文件。 从文件中读取数据或向文件中写入数据。 关闭文件。
9.2 文件的打开和关闭
9.2.1 文件打开函数fopen
fopen()的一般调用形式为:
FILE *fp fp=fopen(文件名,文件操作方式); 功能:按照指定的方式打开/创建指定的文件。 返回值: 打开/创建文件成功时返回与文件相对应的结构体 类型的指针,否则返回空(NULL)。
9.3 文件的读写
9.3.3 文件的格式化输入输出函数 文件的格式化输出函数fprintf( ) fprintf()函数调用的一般形式为: fprintf(文件指针,格式字符串,输入列表); 功能:将给定的数据按照指定格式写入文件。
例如:fprintf(fp, "%d%.2f%c",i,f,ch); 其中fp指向一个已经打开的文件,将变量i,f和ch的值按照整 型格式,浮点型格式(保留2位小数)和字符型格式输出到fp指 向的文件。
9.3 文件的读写
9.3.4 文件的数据块输入输出函数 文件的数据块输出函数fwrite( )
其调用的一般形式为: fwrite (buffer,size,count,fp); buffer:指针变量,表示要写入文件的数据块在内存中的起始 地址; size:一个数据项的字节长度; count:要写入的数据项个数; fp指向一个已经打开的文件。 返回值: 函数执行正确时,为写入文件的数据项数; 函数执行出现错误时返回值小于指定读取的数据项数。
C++程序设计(第二版)第9章流类库与输入输出
9.3.3-1 标准输入流成员函数
函数原型 istream& getline(char* buf,int nCount,char delim=’\n’)
9.2.2 标准流对象
四个流对象均是文 本流对象,主要工 作是完成程序中的 数据与外部设备的 传输及数据格式的 转换。
键盘 istream cin
显示器 ostream cout
程序
9.3 标准设备的输入/输出
9.3.1 输入流 9.3.2 输出流 9.3.3 标准输入/输出函数成员 9.3.4数据流的错误检测
9.1 流的概念
C++语言本身并不包含输入输出功能,但C++标准库提 供了一系列输入输出流类,通过流类完成数据的输入输出。
在C++中,将数据从一个对象到另一个对象的传输抽象为 “流”。从流中获取数据的操作称为提取操作,向流中添 加数据的操作称为插入操作,数据的输入与输出就是通过 I/O流来实现的。
9.3.1 输入流
istream 类提供了格式化和非格式的输入功能。常用的 输入方法是在标准输入流对象cin上使用提取运算符”>>”。 从与键盘相连的标准输入流cin中提取数据并赋值给相应的 对象,提取运算符返回cin流对象的引用,因此提取运算符 可以连用。
cin>>变量名1>>变量名2…>>变量名n; 数据的提取是从输入回车开始的,提取运算符忽略了流 中的空格、制表符、Enter键等空白字符。
9.3.1 输入流
流类库与输入输出-精品.ppt
//指定域宽为10
cout<<pt<<endl;
//输出字符串
cout.width(10);
//指定域宽为10
return 0;
}
东南大学软件学院(苏州 ) C++程序设计
三、文件输入输出
ASCII文件与二进制文件
ASCII文件提供了高级的输入输出功能,把若干个字节转换为一个有意 义的单位,然后以ASCII字符形式输入输出
int main()控制符
作用
{int a; dec cout<<″input a:″; cin>>a; hex
以十进制输出 以十六进制输出
cout<<″deoc:c″t<<dec<<a<<endl;
//以十进以制八形进式制输出整数
ccoouutt<<<<s″″eohtcebtxa::″s″<<e<<(shnee)tbx<as<ea(<8<)<e<ndal<; <e以nnd进l; 制/形/以//式以十输八六出进进(制制n形形的式式取输输值出出,整整8数,数1a0a,16)
cout<<″x2=″<<(-b-sqrt(disc))/(2*a)<<endl;} return 0; }
东南大学软件学院(苏州 ) C++程序设计
二、标准输入输出(格式控制)
1.##使iinn用cclluu控ddee制<<ii符oosm控traen制aipm格>>//式不要忘记包含此头文件
using namespace std;
C语言程序设计教程(第2版)课件第9章
⑵指针与指针的加运算毫无意义,所以指针与指针 没有加运算。 ⑶指针与指针的减运算要求相减的两个指针属于同 一类型,其结果是整数,表示两个指针之间的数 据的个数。其结果值的计算公式是:
ptr1-ptr2=(ptr1的值- ptr2的值) /指针的数据类型所占的字节数 例如:
int *ptr1,*ptr2,*ptr3,x; int ary[5]={2,4,8,16,32}; ptr1 = &ary[0] ; ptr2 = &ary[3]; ptr3 = ary; x=ptr2-ptr1;
9.3 指针与数组
9.3.1 一维数组的指针
数组的指针 :是数组的起始地址。
数组元素的指针 :是数组元素的地址。 当指针变量指向数组或数组元素时,它就是指 向数组的指针变量。
C规定: ⑴数组名代表数组的首地址(起始地址),
也就是第一个元素的地址。
⑵当指针变量p指向数组时,p+1指向数组 的下一个元素。假设一个整型元素占两 个字节,p+1是使p的地址加2个字节。 如:int a[10],*p ; p+i、a+i 、&a[i] 则:p=a ; 与 p=&a[0];等价 都是a[i]的地址。 称指针变量p指向数组元素a[0]
第9章 指 针
本章要点
指针的定义、引用和运算方法
数组、函数和字符串与指针的关系
本章难点
指针变量的引用
指针作为函数参数的运用
预备知识
1. 内存的概念 内存:就是内部存储器,是由存储单元组成 的。它的特点是存储单元是线性连续
的。存储单元的最小单位是字节。
2. 地址的概念
地址:为了访问内存中的某个存储单元,我们 要为它编号,这种编号称为内存地址。 通过地址我们就能够访问该地址所标 识的存储单元。
C++程序设计语言第九章 流类库与输入输出
输出流
插入运算符(<<)
• 插入(<<)运算符是所有标准C++数据类 型预先设计的。 • 用于传送字节到一个输出流对象。 • 插入运算符举例
输出流
控制输出格式
• 控制输出宽度
–为了调整输出,可以通过在流中放入setw操纵符或 调用width成员函数为每个项指定输出宽度。
• 例11-1 使用width控制输出宽度
输出流
例11-3设置对齐方式
#include <iostream.h> #include <iomanip.h> void main() { double values[]={1.23,35.36,653.7,4358.24}; char *names[]={"Zoot","Jimmy","Al","Stan"}; for(int i=0;i<4;i++) cout<<setiosflags(ios::left) <<setw(6)<<names[i] 输出结果: 输出结果: <<resetiosflags(ios::left) Zoot 1.23 Jimmy 35.36 <<setw(10)<<values[i] Al 653.7 <<endl; Stan 4358.24 }
输出流
二进制输出文件
• 以通常方式构造一个流,然后使用 setmode成员函数,在文件打开后改变 模式。 • 使用ofstream构造函数中的模式参量指 定二进制输出模式。 • 使用二进制操作符代替setmode成员函 数:ofs << binary;
C++:流类库与输入输出
C++:流类库与输⼊输出7.2.1 C++的输⼊输出流ios:流基类(抽象类)istream:通⽤输⼊流类和其他输⼊流的基类ostream:通⽤输出流类和其他输出类的基类iostream:通⽤输⼊输出流类和其他输⼊输出流类的基类(以下的派⽣类对象有cin、cout、cerr、clog)ifstream:输⼊⽂件流类ofstream:输出⽂件流类fstream:输⼊输出⽂件流istrstream:输⼊字符串流类ostrstream:输出字符串流类strstream:输⼊输出字符串类iostream_withassign: 通⽤输⼊输出流类和其他输⼊输出流类iostream的的派⽣类7.2.2 预定义的流对象C++中包含⼏个预定义的流对象,它们是标准输⼊流对象cin、标准输出流对象cout、⾮缓冲型的标准出错流对象ceer、缓冲型的标准出错流对象clogcin是istream的派⽣类istream_withassign的对象,它与标准输⼊设备(通常是键盘)相联系。
cout是ostream的派⽣类ostream_withassign的对象,它与标准输出设备(通常是显⽰器)相联系。
ceer是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。
clog是ostream的派⽣类ostream_withassign的对象,它与标准错误输⼊设备(通常是显⽰器)相联系。
由于istream和ostream类都在头⽂件iostream中声明的,因此只要在程序中包含头⽂件iostream.h,C++程序开始时这四个标准流对象的构造函数都被⾃动调⽤。
7.2.3 输⼊输出流的成员函数(1)put函数put函数⽤于输出⼀个字符格式:cout.put(char ch)例如:cout.put('A')===cout.put(65)===cout.put(25+40)(2)get函数get函数的功能与提取运算符>>类似,主要不同之处是get函数在读⼊数据时可以包括空⽩字符,⽽后者不可以。
C++语言程序设计第9章 流类库与输入输出
• 【例9.1】 cout 、cerr区别。
#include <iostream> #include<stdlib.h> using namespace std; int main() { cout<<"hello "<<endl; cerr<<"hello world"<<endl; system("pause"); }
• 将例9-1编译形成项目可执行文件9_1.exe,在命令提示符状态 分别输入两个命令: • “9_1 >t1.txt”和“9_1 2>t2.txt”,分别查看t1.txt和t2.txt可 以看出不同。
9.2.1 插入运算符(<<)和操纵符
• 插入(<<)运算符是所有标准C++数据类型预先设计的,用 于传送字节到一个输出流对象。 • 很多情况下,程序员需要控制输入输出格式。C++提供了 两种格式控制方法:一种方法是使用ios类中有关格式控 制的成员函数;另一种是使用预先定义的操纵符一起工作 。下面重点讲述操纵符。 • C++预定义的操纵符分为带参数的操纵符和不带参数的操 纵符。通常,不带参数的操纵符在iostream文件中,而带 参数的操纵符在iomanip文件中定义。在进行输入输出时 ,操纵符被嵌入到输入或输出链中,用来控制输入输出的 格式。程序中如果使用带参数的操纵符,还必须使用预编 译命令: • #include <iomanip>
• 程序运行时,在内存中为每一个数据流开 辟一个内存缓冲区,用来存放流中的数据 。例如当用cout和插入运算符“<<”向显 示器输出数据时,先将数据送入内存输出 缓冲区保存,直到缓冲区满了或遇到endl, 就将缓冲区中的全部数据送到显示器显示 ;当用cin和提取运算符“>>”从键盘输入 数据时,键盘输入的数据先放着键盘的缓 冲区中,当按回车键时,键盘缓冲区中的 数据送入内存输入缓冲区形成cin流,然后 提取运算符“>>”从输入缓冲区提取数据 送给程序中的变量。
流类库与输入输出
1 或 0
Byte字节: 8 位
可以存储一个字符 (char) 可以用双字节表示长的字符(wchar_t)
域Field: 一组有意义的字符
姓名
4
C++语言程序设计
数据层次
记录Record: 一组有关系的域
C中的struct或 C++中的class
文件File: 一组相关的记录
从文件中读 取一个字符
例get1.cpp
28
C++语言程序设计
如何读一行字符
#include<iostream> #include <fstream> using namespace std;
void main() { const int SIZE=80; char buffer[SIZE]; cout <<"string:"; cin.getline(buffer,SIZE); cout<<buffer<<endl; }
C++语言程序设计
第十一章 流类库与输入/输出
C++语言程序设计
本章主要内容
I/O流的概念 输出流 输入流
输入/输出流
2
C++语言程序设计
简 介
数据存储
存储在变量和数组中的数据是临时的 文件是用来永久保存大量数据的
磁盘
光盘
磁带
3
C++语言程序设计
数据层次
Bit “位” (二进制数字)
C++程序的设计简明教程第9章 C++输入输出流
setf函数
setf函数和unsetf函数通常配合使用,用来 完成格式状态标志的设置和清除。 cout.setf(ios::left);//设置输出左对齐标志 …… cout.unsetf(ios::left);//清除左对齐标志
操纵符
操纵符(manipulator)又称为流操作算子, 是一种特殊的函数。由于操纵符返回流对 象的引用,因此可以连续地使用,并直接 插入到流中,较为方便地控制流中数据的 输入输出格式。
读取当前设置的填充字符
char fill(char ch) 设置当前填充字符为ch,并返回原先设置的填充字符
long flags(void) 读取当前设置的格式状态标志
long flags(long f) 设置当前格式状态标志为f,并返回原先设置的格式状态 标志
long setf(long f) 设置当前格式状态标志为f,并返回原先设置的格式状态 标志
9.4 格式控制
在实践应用中经常需要对输入输出的格式进 行控制,例如设置域宽和精度、设置或者清 除格式状态标志、设置填充字符、设置数据 对齐方式,以及在输出流中插入空字符或者 换行符等等。
C++提供了两种用于格式控制的方法,一种 是调用ios类的格式控制成员函数,另一种是 使用流操纵符。
格式控制成员函数
ios::floatfield标志组
ios::fixed
以定点形式输出浮点数
ios::scientific 以指数形式输出浮点数
其它标志
ios::skipws 输入时跳过空白符 ios::showbase 输出时带有基数标志,八进制数有前 导0,十六进制数有前导0x ios::showpoint 输出浮点数时带有小数点 ios::showpos 输出十进制正数时有前导+ ios::uppercase 将十六进制数和以指数形式表示的 数中的字母转换为大写形式
c++流类库与输入输出习题答案
1.概念填空题1.1头文件iostream中定义了4个标准流对象cin,cout,cerr,clog。
其中标准输入流对象为cin,与键盘连用,用于输入;cout为标准输出流对象,与显示器连用,用于输出。
1.2用标准输入流对象cin与提取操作符>>连用进行输入时,将空格与回车当作分隔符,使用get()成员函数进行输入时可以指定输入分隔符。
1.3每一个输入输出流对象都维护一个流格式状态字,用它表示流对象当前的格式状态并控制流的格式。
C++提供了使用格式控制函数与操作子函数来控制流的格式的方法。
1.4 C++根据文件内容的数据格式可分为两类:文本文件和二进制文件。
前者存取的最小信息单位为字节,后者记录。
1.5文件输入是指从文件向内存读入数据;文件输出则指从内存向文件输出数据。
文件的输入输出首先要打开文件;然后进行读写;最后关闭文件。
1.6文本文件是存储ASCII码字符的文件,文本文件的输入可用cin从输入文件流中提取字符实现。
文本文件的输出可用cout将字符插入到输出文件流来实现。
程序在处理文本文件时需要(需要/不需要)对数据进行转换。
1.7二进制文件是指直接将计算机内的数据不经转换直接保存在文件中。
二进制文件的输入输出分别采用read()、write() 成员函数。
这两个成员函数的参数都是2个,分别表示读写缓冲区和字节数。
1.8设定、返回文件读指针位置的函数分别为seekg,tellg;设定、返回文件写指针位置的函数分别为seekp,tellp。
2 简答题2.1 为什么cin输入时,空格和回车无法读入?这时可改用哪些流成员函数?2.2 文件的使用有它的固定格式,试做简单介绍。
2.3 在ios类中定义的文件打开方式中,公有枚举类型open_mode的各成员代表什么文件打开方式?2.4 简述文本文件和二进制文件在存储格式、读写方式等方面的不同,各自的优点和缺点。
2.5 文本文件可以按行也可以按字符进行复制,在使用中为保证能完整复制要注意哪些问题?2.6 文件的随机访问为什么总是用二进制文件,而不用文本文件?2.7 怎样使用istream和ostream的成员函数来实现随机访问文件?3.选择题3.1要进行文件的输出,除了包含头文件iostream外,还要包含头文件(C )。
C++程序设计:第十一讲流类库与输入输出
while( cin.fail() ) //返回非零则操作失败
{
cout<<"状态字为:"<<cin.rdstate()
<<endl; //0为正常,非0则失败
cin.clear(0);
cin.getline(str,255);
//读空缓冲区
cout<<"输入错误,请重新输入整数"<<endl;
}
调用方式不直
9
观,程序繁琐。
9.3.3 重载插入和提取运算符
对“<<”和“>>”重载的函数形式如下: friend istream & operator >> (istream &,自定义类 &); friend ostream & operator << (ostream &,自定义类 &);
输入/输出文件流:<fstream> 。
2
9.3.2 提高标准输入/输出的稳健性
标准设备的输入并不安全,稳健性有待提高。 可采取的方式:避免输入失误(如类型,个 数不匹配)。 要解决的问题:如何在程序中发现输入失 误,并采取补救措施?
3
【例9.3】提高输入的健壮性。 int main() {
char str[256]; int i; cout<<"请输入整数:"<<endl; cin>>i; //如果输入的是字符串呢?
(istream&,Complex&);
private:
double real;
double imag;
第九章C流PPT课件
.
17
§9.3 格式控制
一、用ios类成员函数控制格式
2.设置标志字的成员函数
229页
设置状态标志:
long setf(long);//把指定位的状态标志设置为1
如:cout.setf(ios::hex);//设置输出为十六进制形式
cout.setf(ios::scientific | ios::showpoint)
while(1) {char x=cin.get();
cout<<‘*’; cout<<x; if(x=='q')
break; }
由于输入流的缓冲功能,get()函数在用户输入回车键
之前不会结束输入的等待;而用户一旦输入回车键后,它
会不断地从缓冲区中读取输入. 的字符。
8
§9.2 预定义类型的I/O
int x; char y; cin>>x>>y; }
cin将空白字符(空格、tab符、回车符)作为结束
.
6
§9.2 预定义类型的I/O
235页 2、使用成员函数get( )获取字符或字符串
get( )既可读入单个字符,也可读入比设定长度少1的字
符串,不论中间有无空白符,遇回车符停止读入。
.
7
§9.2 预定义类型的I/O
.
3
§9.1 C++流库概述
istream
ios
streambuf
fstreambase
strstreambase
ostream
ifstream
istrstream
ofstream
ostrstream
constream
《C++程序设计》(第2版)教学资源 教师用书 教学大纲第二版
《C++程序设计》教学大纲课程名称:C++程序设计英文名称:F undamental course of C++ Programming面向专业:对计算机要求较高的理工科专业授课学时____48 __;习题课____8 __;实验学时___56(含课外24);课程学分:___ 4 _ __;一、课程的性质与目的程序设计课程是大学生的通识教育课程,包括面向对象程序设计及最基本的数据结构和软件工程的知识。
其任务是培养学生的面向对象的编程能力,也锻炼大学生的逻辑思维能力,为大学生将来结合其专业应用计算机编程打下一个扎实的基础。
本课程选用面向对象的C++语言作为教学语言。
本课程的先修课程是大学计算机基础。
C++课程设计是本课程的组成部分,在短学期进行,因单独成课大纲另立,软件工程的知识安排在课程设计中。
本大纲仅为基础教学部分的大纲。
二、教学内容与要求本课程教学分为两阶段进行,分别在两个学期实施,学时分配为授课24+24,习题课4+4,上机实验28+28学时。
总上机时间含课外上机24学时。
第一阶段:1.C++基础知识(1)初识C++程序;(2)了解类型潜在的面向对象的特性——值集与操作集的封装(3)掌握基本数据类型和运算:关键字与标识符,基本数据类型,数组,枚举类型,运算符、表达式和优先级;(4)理解类型的相容性与不相容性;(5)掌握简单标准输入输出的程序实现。
2.基本控制结构程序设计(1)理解算法的概念,掌握算法的描述方法,了解程序设计三种基本结构;(2)掌握双路和多路选择结构的程序设计:if 语句,switch语句;(3)掌握循环结构的程序设计: while语句,for语句,do…while语句;(4)掌握常用算法的应用:直接法,枚举法,递推法,迭代法;(5)应用结构化技术分解程序,设计、实现、测试和查错简单程序;(6)掌握文本文件的输入输出。
3.函数(1)理解函数抽象机制,掌握函数定义与函数的调用;(2)理解参数化机制(值调用),了解参数的传递过程;(3)理解函数的返回值及函数原型说明;(4)理解全局变量,局部变量,变量的存贮类型与作用域,生命期与可见性;(5)掌握函数的递归调用,编写、测试、调试简单的递归函数;(6)理解函数重载,缺省变元,内联函数。
流类库和输入输出(C程序设计(第2版)吴乃陵)
iofile.open(“myfile.txt”,ios::in|ios::out);
整理ppt
6
第九章 流类库和输入/输出
文件是存储在磁盘、磁带等外部设备上数据集合,每 一个文件都必须有一个唯一名字。使用文件前必须首先 打开文件,使用后必须关闭文件。对文件的操作时通过 文件流类完成的。文件流类在流与文件之间建立连接, 使用这些文件流类必须用#include 编译指令将fstream.h 包含进来。
int=filebuf::openprot); ofstream::ofstream(const char*,int=ios::out,
int=filebuf::openprot); fstream::fstream(const char*,int,
int=filebuf::operprot); 所以1,2两步可合成: fstream iofile(”myfile.txt”,ios::in|ios::out);
C++把每一个文件都看成一个有序的字节流,见图9.2, 每一个文件或者以文件结束符(end of file marker)结束, 或者在特定的字节号处结束。
0 1 2 3 4 5 6 7 8 … n-1
…
文件结束符
图9.2 C++把文件看作有序的n个字节的流
整理ppt
3
9.2 文件的输入与输出
当打开一个文件时,该文件就和某个流关联起来了。对文件进行读 写实际上受到一个文件定位指针(file position pointer)的控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例9.1】整型数输出。
basic_ ios
指针 basic_ streambuf
basic_ istream basic_ ostream
basic_ ifstream
basic_ iostream basic_ ofstream
basic_ fstream
图9.1 主要输入/输整出理p流pt 模板层次
3
9.1 C++的基本流类体系
right=0x0004,
//输出右对齐
internal=0x0008, //在输出符号或数制字符后填充
dec=0x0010, //在输入输出时将数据按十进制处理
oct=0x0020, //在输入输出时将数据按八进制处理
hex=0x0040, //在输入输出时将数据按十六进制处理
整理ppt
7
9.2 输入输出的格式控制(选读)
“插入”的含义是指输出操作,可看作向流中插入一个字 符序列。
cin使用提取运算符。 cout、cerr和clog使用插入运算符。
文件:
文件处理完成永久保存的功能。 在Windows下不同的C++平台,都为文件功能作了扩充, 在VC++的MFC编程中采用了序列化(Serialization)。
整理ppt
6
9.2 输入输出的格式控制(选读)
格式控制符:
C++在类ios_base中提供格式化输入输出。这些格式 是对所有文本方式的输入输出流均适用。格式控制符 定义为公有的无名枚举类型,在VC++6.0中定义为:
enum{
skipws=0x0001,
//跳过输入中的空白字符
left=0x0002,
//输出左对齐
整理ppt
5
9.1 C++的基本流类体系
提取运算符和插入运算符:
重载的提取运算符“>>”(stream_extraction operator) 和插入运算符“<<”(stream_insertion operator),执行输 入/输出操作。
“提取”的含义是指输入操作,可看作从流中提取一个字 符序列。
第九章 流类库和输入/输出
本章的最主要目的就是把对象保存到磁盘文件中并从 磁盘文件重建对象。
C++语言中并没有输入/输出语句,而是在标准库 里包含了一个I/O流类库,它与标准模板库同为C++标 准库中最重要的组成部分。数据从一个对象到另一个对 象的传送被抽象为“流”。数据的输入/输出就是通过 输入/输出流来实现的。
空白字符包括:空格、制表、垂直制表、换行、换页和 回车。
整理ppt
8
9.2 输入输出的格式控制(选读)
该枚举量说明中每一个枚举量实际对应两字节数据(16 位)中的一个位,所以可以同时采用几个格式控制,只 要把对应位置1即可,这样既方便又节约内存。取多种 控制时,用或“|”运算符来合成,合成为一个长整型数, 在ios中为: protected:
流是一种抽象的概念,负责在数据的产生者和数据 的使用者之间建立联系,并管理数据的流动。
整理ppt
1
Hale Waihona Puke 第九章 流类库和输入/输出
9.1 C++的基本流类体系 9.2 输入输出的格式控制(选读) 9.3 标准设备的输入/输出
9.4 文件的输入与输出 9.5 字符串流(选读) 9.6 文件与对象
整理ppt
long x_flags;
点击访问x_flags的重载函数定义
整理ppt
9
9.2 输入输出的格式控制(选读)
输入输出流格式控制标志:
protected: int x_precision; //标志浮点数精度,默认为6位 int x_width; //输出域宽,默认域宽为0, //重设域宽只对其后第一输出项有效,如域宽不足,则不受限制 char x_fill; //标志域宽有富余时填入的字符
有关模板派生请参见教学指导书第8章中“类模板的派 生的讨论”
整理ppt
4
9.1 C++的基本流类体系
标准输入/输出流对象:
在C++的流类库中定义了四个全局流对象:cin, cout,cerr和clog。可以完成人机交互的功能。
cin标准输入流对象,键盘为其对应的标准设备。 cout标准输出流对象,显示器为标准设备。 cerr和clog标准错误输出流,输出设备是显示器。 其中cin、cout和clog是带缓冲区的,缓冲区由 streambuf类对象来管理。而cerr为非缓冲区流,一旦 错误发生立即显示。 要使用这四个功能,必须包含<iostream>文件。
2
9.1 C++的基本流类体系
流类体系:以抽象类模板basic_ios为基类,流类模板派生体系见图
9.1。整个流类模板体系的标准I/O在头文件<iostream>中说明,它包含 头文件<ios>、<streambuf>、<istream>和<ostream>。而输入输出 文件流部分在头文件<fstream>中说明。
流类体系说明:
basic_streambuf不是basic_ios的派生类,而是一个 独立的类,只是basic_ios有一个保护访问限制的指针指 向它。 类basic_streambuf的作用是管理一个流的缓冲区。
basic_ios类模板提供了对流进行格式化输入输出和错 误处理的成员函数。所有派生都是公有派生。 basic_istream类模板提供完成提取(输入)操作的成员函 数,而basic_ostream类模板提供完成插入(输出)操作 的成员函数。basic_iostream类本质上是前两者的聚合, 并没有增加成员。派生全部为公有派生。
fixed=0x1000,
//定点数方式输出实数
unitbuf=0x2000,
//插入后,立即刷新流
stdio=0x4000} //插入后,立即刷新stdout和stderr
对不同的C++平台,枚举常量名相同,但所取值及枚举 类型名不一定相同。后文的枚举常量也是如此。为保证 通用性,实际只用枚举常量名而不用数值
showbase=0x0080, //在输出时带有表示数制基的字符
showpoint=0x0100, //输出浮点数时,必定带小数点
uppercase=0x0200, //输出十六进制,用大写
showpos=0x0400,
//输出正数时,加”+”号
scientific=0x0800,
//科学数方式输出浮点数