《C++程序设计》电子教案第10章 流类库与输入输出
C++程序设计基础教程 第10章 输入输出流
![C++程序设计基础教程 第10章 输入输出流](https://img.taocdn.com/s3/m/94605469a8956bec0975e3c0.png)
第10章 输入/输出流
10.2 C++语言的基本流类体系
10.2.1 C++语言基本流类体系的构成
ios
istream iostrea m
ostream
istream_withassign
ostream_withassign
图10.1 I/O流类库的类层次
2019/2/22
第10章 输入/输出流
2019/2/22
第10章 输入/输出流
10.2 C++语言的基本流类体系
10.2.2标准输入/输出流
标准I/O流是C++语言预定义的对象,提供内存与 外部设备进行数据交互功能,对数据进行解释和传输, 提供必要数据缓冲。C++语言的I/O流类库中预先定 义了4个标准流对象:cin、cout、cerr和clog,它们不 是C++语言中的关键字。只要程序中包含了头文件 iostream,编译器调用相应的构造函数产生这4个标准 流对象,用户在程序中就可以直接使用了。
《C++程序设计基础教程》
第 10 章
输入/输出流
战略决定一切、执行决定一切、细 节决定一切!
第10章 输入/输出流
本章内容
输入/输出流的概念
1
C++语言的基本流类体系 2 文件的输入/输出
程序举例
2019/2/22
3
4
第10章 输入/输出流
数据的输入和输出(简写为I/O)包括对标准输入设备 键盘和标准输出设备显示器、对在外存磁盘上的文件和对 内存中指定的字符串存储空间进行输入/输出3个方面。 对标准输入设备和标准输出设备的输入/输出简称为标 准I/O,对在外存磁盘上文件的输入/输出简称为文件I/O, 对内存中指定的字符串存储空间的输入/输出简称为串I/O。
C第10章流类库和输入输出PPT课件
![C第10章流类库和输入输出PPT课件](https://img.taocdn.com/s3/m/9c825f373c1ec5da50e270ec.png)
cout的重定向(*)
#include <iostream> using namespace std; int main() { cout<<"SEU\n"; cerr<<"NJU\n"; clog<<"PKU\n"; return 0; } //命令行方式下运行 **.exe >>**.txt
中插入一个字符序列。
重载插入和提取运算符
• 插入和提取运算符只能重载为类的友元函数 • 提取运算符重载格式:friend
istream&operator>>(istream&,className &);
• 插入运算符重载格式:friend
ostream&operator<<(ostream&,className &);
第10章 流类库和输入输出
本章要点
10.1 C++的基本流类体系
basic_ ios
basic_ streambuf
指针
basic_ istream
basic_ ostream
basic_ ifstream
basic_ iostream basic_ ofstream
basic_ fstream
else{ s.putback(c); //无括号,返回一个字符到输入缓冲区 s>>re; } //实数 if(s)a=Complex(re,im); return s;}
提取运算符重载:复数类
流类库和输入输出C程序设计第2版课件
![流类库和输入输出C程序设计第2版课件](https://img.taocdn.com/s3/m/39db90612bf90242a8956bec0975f46526d3a773.png)
if (!ifile)
{ cout << "test文件不能打开" << endl;
return 0; } char str[80]; ifile >> str; // 与get不同, >>遇到空格时结束 ifile.close();
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);
int=filebuf::opernprot); void fstream::open(const char*,int,
int=filebuf::openprot); 第一个参数为要打开的磁盘文件名。第二个参数为打开方式, 有输入(in),输出(out)等,打开方式在ios基类中定义为 枚举类型。第三个参数为指定打开文件的保护方式,一般取默 认。所以第二步可如下进行: iofile.open(“myfile.txt”,ios::in|ios::out);
指针
streambuf
istream
ostream
ifstream
iostream
fstream
主要输入/输出流模板层次
ofstream
第2页,共21页。
C语言程序设计课件第10章 输入输出流
![C语言程序设计课件第10章 输入输出流](https://img.taocdn.com/s3/m/b1b617f9763231126fdb116c.png)
# include <iomanip.h>
void main(void)
{ char *name[]={"Zhou","Zhao","Liu","Chen","Li"};
double score[]={89,87.2,78.33,91.444,85.5555};
for (int i=0;i<5;i++) { cout.setf(ios::left);
如整数1025,以文本形式(31003236H)存储占用
四个字节,以二进制形式(0401H)存储则只占用
两个字节。
2021/7/13
23
2.文件的操作 文件操作分成4步: (1)定义文件流对象 ifstream 文件输入流对象; ofstream 文件输出流对象; fstream 文件输入/出流对象; (2)打开文件 文件流对象.open(磁盘文件名,输入输出模式)
14
2.其它格式控制
若要改变流的其它输出格式(如对齐方式), 可使用ios类中定义的成员函数setf来实现, 函数格式如下:
cout.setf(格式标志)
格式标志在类ios中被定义为枚举值,在引用这 些格式标志时要在前面加上类名ios和域运算 符“::”。
2021/7/13
15
【例10.3】 将学生姓名与比赛得分通过初始化 赋给数组name[5]、score[5],指定姓名域宽 为10个字符、左对齐,比赛得分为右对齐、 用定点方式、小数点后有2位有效数字。
2021/7/13
22
10.3 文件操作与文件流
10.3.1 文件的概念
1.文件
流类库与输入输出-精品.ppt
![流类库与输入输出-精品.ppt](https://img.taocdn.com/s3/m/42039a1701f69e314332946e.png)
//指定域宽为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;
第10章 C++语言的输入与输出-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社
![第10章 C++语言的输入与输出-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社](https://img.taocdn.com/s3/m/de520fee5a8102d277a22f17.png)
设置状态标志flags 清楚状态标志,并返回前状态标志 测试状态标志 设置标志flags, 并返回前状态标志 返回当前的宽度设置值 设置域宽w,返回以前的设置 设置小数位数p,返回以前的小数位数 返回当前的填充字符 设置填充字符ch,返回当前的填充字符
13
下面分别介绍这些成员函数的使用方法;
(1)设置状态标志:
cout<<”x_width=”<<cout.width( )<<endl; cout<<”x_fill=”<<cout.fill ( )<<endl; cout<<”x_precision=”<<cout.precision( )<<endl; cout<<123<<” ”<<123.45678<<endl; cout<<”______________________________\n”; cout<<”*** x_width=10,x_fill=, x_precision=4 ***\n”; cout.width(10); cout.precision(4); cout<<123<<” ”<<123.45678<<” ”<<234.567<<endl;
1. C++的流概述 ❖ 在C++中,输入输出流被定义为类,称为流类。 ❖ I/O 系 统 仍 然 是 以 字 节 流 的 形 式 实 现 的 , 流
(Stream)实际上就是一个字节序列,流总是 与某一设备相联系的,它既可以从输入设备 (如键盘、磁盘等)流向计算机内存,亦可以 从计算机内存流向输出设备(如显示器、打印 机、磁盘等)。 ❖ 输入输出的字节可以是ASCII字符、内部格式 的原始数据、图形图像、数字音频、视频等。
C语言程序设计教程(电子教案)
![C语言程序设计教程(电子教案)](https://img.taocdn.com/s3/m/a195bcbb011ca300a7c3907e.png)
学习目标
对C语言有一个概括的了解, 能够编写包含键盘输入、计算和 显示输出等操作的简单C程序。
4
主要内容
• C语言的产生与特点 • 简单C程序的组成 • C语言应用程序开发的基本步骤
5
1.1 C语言的产生及特点
C语言是为了编写系统程序而在1968年开始 研发的计算机高级语言
C语言表达能力强,使用灵活,程序结构清 晰,紧凑,可移植性好
指针 类型
17
基本数据类型说明符
整型:int long
字符型:char 实型:float
double long double
18
2.2 常 量
常量∶在程序运行过程中,其值不能被改 变的量。
一. 不同数制整型常量的表示
例如: 12 :十进制数 12
012 :八进制数 12(等于十进 制数10,用前导符0表示八进制数常量)
计算x+y+z,并将结 8果赋给变量sum
显示变量 sum的值
主函数 main()
一般C程序的组成
【例1-2】采用模块结构,改写例1-1的程序。 add(int x,int y,int z )
{ return(x+y+z);
}
函数add()
调用函数 add()
main() { int x,y,z; printf("Please Input Three Integers:\n "); scanf("%d,%d,%d ",&x,&y,&z);
4. 用‘\’ ’表示字符’ ,‘\”’表示字符”, ‘\\ ’表示字符\ 。
5. 用双引号括起来的字符序列表示字符串常量,其 中最后一个字符是字符串结束符‘\0’,不显式 地表示出来。如:“English” 。
C++:流类库与输入输出
![C++:流类库与输入输出](https://img.taocdn.com/s3/m/06b095e1f80f76c66137ee06eff9aef8941e4826.png)
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语言程序设计教程》全册教案教学设计
![《C语言程序设计教程》全册教案教学设计](https://img.taocdn.com/s3/m/e5f0bc3e24c52cc58bd63186bceb19e8b8f6ecb5.png)
《C语言程序设计教程》第一章教案设计【教学目标】1. 理解C语言的发展历程和特点。
2. 掌握C语言的基本语法和结构。
3. 能够编写简单的C语言程序。
【教学内容】1. C语言的发展历程和特点。
2. C语言的基本语法和结构。
3. 简单的C语言程序编写。
【教学步骤】1. 引入C语言的发展历程和特点,让学生了解C语言的重要性和应用领域。
2. 讲解C语言的基本语法和结构,包括变量、数据类型、运算符等。
3. 通过实例讲解如何编写简单的C语言程序,让学生掌握基本的程序结构。
【教学评价】1. 学生能够描述C语言的发展历程和特点。
2. 学生能够掌握C语言的基本语法和结构。
3. 学生能够编写简单的C语言程序。
《C语言程序设计教程》第二章教案设计【教学目标】1. 掌握C语言的变量和数据类型。
2. 理解C语言的运算符和表达式。
3. 能够进行基本的数学运算和逻辑运算。
1. C语言的变量和数据类型。
2. C语言的运算符和表达式。
3. C语言的基本数学运算和逻辑运算。
【教学步骤】1. 讲解C语言的变量和数据类型,让学生掌握如何声明和使用变量。
2. 讲解C语言的运算符和表达式,让学生了解不同运算符的使用方法和优先级。
3. 通过实例讲解如何进行基本的数学运算和逻辑运算,让学生掌握运算符的实际应用。
【教学评价】1. 学生能够正确声明和使用变量。
2. 学生能够理解和使用不同的运算符。
3. 学生能够进行基本的数学运算和逻辑运算。
《C语言程序设计教程》第三章教案设计【教学目标】1. 掌握C语言的控制语句。
2. 理解C语言的条件语句。
3. 能够编写简单的循环程序。
【教学内容】1. C语言的控制语句。
2. C语言的条件语句。
3. C语言的循环语句。
1. 讲解C语言的控制语句,让学生了解如何进行跳转和分支。
2. 讲解C语言的条件语句,让学生掌握如何根据条件进行分支。
3. 通过实例讲解如何使用循环语句编写循环程序,让学生掌握循环的使用方法和退出条件。
C 输入输出流.ppt
![C 输入输出流.ppt](https://img.taocdn.com/s3/m/e8e869ec51e79b8969022611.png)
streambuf
ios
streambuf
istream
ostream
stringbuf istringstream
filebuf ifstream
iostream filebuf ofstream
stringbuf ostringstream
filebuf
fstream
stringstream
long l = 1000;
unsigned short us = 234;
float f = 3.23;
double df = 1.55;
char str[] = "C++ IO is very easy!";
cout << ch << endl;
cout << s << endl;
cout << i << endl;
例 将姓名和成绩按照固定宽度对齐输出,并利用*填充空白部分。 #include <iostream> #include <iomanip> using namespace std; int main(){
double values[ ] = {89.5, 78, 92.5, 84}; char *names[ ] = {"Zoot", "Jimmy", "Allen", "Stan"};
14
(4) 控制输出宽度 有时在发票上,了使打印机输出的内容和发票的样式能够对应上,需要使输出 项的输出宽度不小于某个宽度,若输出项自身的宽度大于指定的宽度,则使用 输出项自身的宽度。输出宽度的设置可以通过操作符setw。
《C语言程序设计教程》全册教案完整版教学设计
![《C语言程序设计教程》全册教案完整版教学设计](https://img.taocdn.com/s3/m/f07570b7162ded630b1c59eef8c75fbfc67d945e.png)
《C语言程序设计教程》第一章教案一、教学目标1. 让学生了解C语言的发展历程和特点。
2. 掌握C语言的基本语法和结构。
3. 学会使用C语言编写简单的程序。
二、教学内容1. C语言的发展历程和特点2. C语言的基本语法和结构3. C语言程序的基本框架4. 简单的C语言程序示例三、教学方法采用讲授法、示例法、练习法相结合的方式进行教学。
四、教学步骤1. 引入话题:介绍C语言的发展历程和特点。
2. 讲解C语言的基本语法和结构,包括数据类型、变量、常量、运算符、表达式等。
3. 讲解C语言程序的基本框架,包括主函数、变量定义、函数体等。
4. 通过示例程序,让学生了解和掌握C语言编程的基本方法。
5. 布置练习题,让学生课后巩固所学知识。
五、教学评价通过课堂提问、练习题、课后作业等方式对学生的学习情况进行评价。
《C语言程序设计教程》第二章教案一、教学目标1. 让学生掌握C语言的运算符和表达式。
2. 学会使用C语言进行基本的输入输出操作。
3. 了解C语言的控制语句,包括条件语句和循环语句。
二、教学内容1. C语言的运算符和表达式2. C语言的输入输出操作3. C语言的控制语句三、教学方法采用讲授法、示例法、练习法相结合的方式进行教学。
四、教学步骤1. 复习C语言的基本语法,引入运算符和表达式的概念。
2. 讲解各种运算符的用法和优先级,通过示例让学生掌握运算符和表达式的使用。
3. 讲解C语言的输入输出操作,包括printf函数和scanf函数的使用。
4. 讲解C语言的控制语句,包括if语句、switch语句、for循环、while循环等。
5. 通过示例程序,让学生掌握控制语句的使用方法。
6. 布置练习题,让学生课后巩固所学知识。
五、教学评价通过课堂提问、练习题、课后作业等方式对学生的学习情况进行评价。
《C语言程序设计教程》第三章教案一、教学目标1. 让学生掌握C语言的函数概念和作用。
2. 学会自定义函数,并了解函数的调用方式。
《C语言程序设计教程》全册教案教学设计
![《C语言程序设计教程》全册教案教学设计](https://img.taocdn.com/s3/m/a6e41a9bdb38376baf1ffc4ffe4733687e21fc8d.png)
《C语言程序设计教程》全册教案完整版教学设计第一章:C语言概述1.1 教学目标让学生了解C语言的历史和发展背景让学生掌握C语言的特点和优势让学生了解C语言的应用领域1.2 教学内容C语言的历史和发展背景C语言的特点和优势C语言的应用领域1.3 教学方法讲解法:讲解C语言的历史和发展背景,讲解C语言的特点和优势讨论法:引导学生讨论C语言的应用领域1.4 教学评价课后作业:让学生编写简单的C语言程序,了解C语言的基本语法第二章:C语言基础语法2.1 教学目标让学生掌握C语言的基本语法,包括数据类型、运算符、表达式等让学生了解C语言的控制语句,包括条件语句、循环语句等2.2 教学内容数据类型、变量和常量运算符和表达式控制语句:条件语句、循环语句2.3 教学方法讲解法:讲解数据类型、变量和常量的定义和使用,讲解运算符和表达式的使用,讲解条件语句和循环语句的语法和功能编程实践:让学生编写C语言程序,运用所学的控制语句2.4 教学评价课后作业:让学生编写C语言程序,运用所学的数据类型、运算符和控制语句第三章:函数与编译预处理3.1 教学目标让学生掌握C语言的函数概念和定义方法让学生了解C语言的编译预处理指令3.2 教学内容函数的定义和声明编译预处理指令:include、define、宏定义和宏调用3.3 教学方法讲解法:讲解函数的定义和声明的语法和功能,讲解编译预处理指令的使用方法编程实践:让学生编写C语言程序,运用所学的函数和编译预处理指令3.4 教学评价课后作业:让学生编写C语言程序,运用所学的函数和编译预处理指令第四章:数组和字符串4.1 教学目标让学生掌握C语言的数组和字符串的概念和使用方法4.2 教学内容一维数组的定义和使用字符串的定义和使用4.3 教学方法讲解法:讲解一维数组的定义和使用的语法和功能,讲解字符串的定义和使用的语法和功能编程实践:让学生编写C语言程序,运用所学的数组和字符串4.4 教学评价课后作业:让学生编写C语言程序,运用所学的数组和字符串第五章:指针5.1 教学目标让学生掌握C语言的指针的概念和使用方法5.2 教学内容指针的概念和声明指针的赋值和使用指针与数组指针与函数5.3 教学方法讲解法:讲解指针的概念和声明的语法和功能,讲解指针的赋值和使用的语法和功能,讲解指针与数组和指针与函数的关系编程实践:让学生编写C语言程序,运用所学的指针知识5.4 教学评价课后作业:让学生编写C语言程序,运用所学的指针知识第六章:结构体、联合体和枚举6.1 教学目标让学生掌握C语言中的结构体、联合体和枚举的概念和使用方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++中所有流都是相同的 , 但文件可以不同 。 中所有流都是相同的, 但文件可以不同。 中所有流都是相同的 使用流以后, 使用流以后 , 程序用流统一对各种计算机设备 和文件进行操作,使程序与设备、 和文件进行操作 , 使程序与设备 、 程序与文件 无关,从而提高了程序设计的通用性和灵活性。 无关 , 从而提高了程序设计的通用性和灵活性 。 也就是说, 也就是说 , 无论与流相联系的实际物理设备差 别有多大,流都采用相同的方式运行。 别有多大 , 流都采用相同的方式运行 。 这种机 制使得流可以跨越物理设备平台, 制使得流可以跨越物理设备平台 , 实现流的透 明运作,而与实际的物理设备无关。例如, 明运作 , 而与实际的物理设备无关 。 例如 , 往 显示器上输出字符和向磁盘文件或打印机输出 字符,尽管接受输出的物理设备不同, 字符 , 尽管接受输出的物理设备不同 , 但具体 操作过程是相同的。 操作过程是相同的。
返回本节
10.2 格式化 格式化I/O
10.2.1 10.2.2 10.2.3 10.2.4 ios类中的枚举常量 类中的枚举常量 使用ios成员函数 使用 成员函数 使用I/O操作符 使用 操作符 检测流操作的错误
返回首页
10.2.1 ios类中的枚举常量 类中的枚举常量
在根基类ios中定义有三个用户需要使用的枚举类型, 在根基类 中定义有三个用户需要使用的枚举类型,由 中定义有三个用户需要使用的枚举类型 于它们是在公用成员部分定义的, 于它们是在公用成员部分定义的,所以其中的每个枚举类 型常量在加上ios::前缀后都可以为本类成员函数和所有外 型常量在加上 前缀后都可以为本类成员函数和所有外 部函数访问。 部函数访问。 在三个枚举类型中有一个无名枚举类型, 在三个枚举类型中有一个无名枚举类型,其中定义的每个 枚举常量都是用于设置控制输入输出格式的标志使用的。 枚举常量都是用于设置控制输入输出格式的标志使用的。 该枚举类型定义如下: 该枚举类型定义如下: enum { skipws,left,right,internal,dec,oct,hex,sh owbase,showpoint, uppercase,showpos,scientific,fixed,unitbuf, stdio };
10.1.1 预定义流
1.cout . 输出流类中定义有对左移操作符<<重载的一 在 ostream输出流类中定义有对左移操作符 重载的一 输出流类中定义有对左移操作符 组公用成员函数,函数的具体声明格式为: 组公用成员函数,函数的具体声明格式为: ostream& operator<<(简单类型标识符); (简单类型标识符) 2.cin . 输入流类中定义有对右移操作符>>重载的一组 在istream输入流类中定义有对右移操作符 重载的一组 输入流类中定义有对右移操作符 公用成员函数,函数的具体声明格式为: 公用成员函数,函数的具体声明格式为: istream& operator>>(简单类型标识符 ); (简单类型标识符&)
3.cerr . cerr类似标准错误文件。cerr与cout的差别在于: 类似标准错误文件。 的差别在于: 类似标准错误文件 与 的差别在于 不能重定向。 (1)cerr不能重定向。 ) 不能重定向 不能被缓冲, (2)cerr不能被缓冲, 它的输出总是直接传达到标准输 ) 不能被缓冲 出设备上。 出设备上。 4.clog . clog是不能重定向的,但是可以被缓冲。在某些系统中, 是不能重定向的, 是不能重定向的 但是可以被缓冲。在某些系统中, 由于缓冲,使用clog代替 代替cerr可以改进显示速度。 可以改进显示速度。 由于缓冲,使用 代替 可以改进显示速度 clog << "Error" << "\n";
C++中把数据之间的传输操作称作流。在C++ 中把数据之间的传输操作称作流。 中把数据之间的传输操作称作流 中,流既可以表示数据从内存传送到某个载体 或设备中,即输出流; 或设备中,即输出流;也可以表示数据从某个 载体或设备传送到内存缓冲区变量中, 载体或设备传送到内存缓冲区变量中,即输入 在进行I/O操作时 首先打开操作, 操作时, 流。在进行 操作时,首先打开操作,使流和 文件发生联系, 文件发生联系,建立联系后的文件才允许数据 流入或流出,输入或输出结束后, 流入或流出,输入或输出结束后,使用关闭操 作使文件与流断开联系。 作使文件与流断开联系。
long flags(long f);//重新设置格式状态字为 的值,返回此前的格式状态字 重新设置格式状态字为f的值 重新设置格式状态字为 的值, int good(); //操作正常时返回非 值,当操作出错、失败和读到文件 操作正常时返回非0值 当操作出错、 操作正常时返回非 //结束符时均为不正常,则返回0 结束符时均为不正常,则返回 结束符时均为不正常 int precision(); //返回浮点数输出精度,即输出的有效数字的位数 返回浮点数输出精度, 返回浮点数输出精度 int precision(int n); //设置浮点数的输出精度为 ,返回此前的输出精度。系统预设 设置浮点数的输出精度为n,返回此前的输出精度。 设置浮点数的输出精度为 //置的输出精度为 ,即输出的浮点数最多具有 位为有效数字 置的输出精度为6,即输出的浮点数最多具有6位为有效数字 置的输出精度为 int rdstate(); //操作正常时返回 ,否则返回非0值,它与good()正好相反 操作正常时返回0,否则返回非 值 它与 正好相反 操作正常时返回 long setf(long f); //根据参数 设置相应的格式化标志,返回此前的设置。该参数 根据参数f设置相应的格式化标志 根据参数 设置相应的格式化标志,返回此前的设置。 // f所对应的实参为无名枚举类型中的枚举常量(又称格式化常 所对应的实参为无名枚举类型中的枚举常量( 所对应的实参为无名枚举类型中的枚举常量 //量),可以同时使用一个或多个常量,每两个常量之间要用按位或 可以同时使用一个或多个常量, 量 //操作符连接。如需要左对齐输出,并使数值中的字母大写时, 操作符连接。 操作符连接 如需要左对齐输出,并使数值中的字母大写时, //则调用该函数的实参为 则调用该函数的实参为ios::left | ios::uppercase 则调用该函数的实参为
第10章 流类库与输入输出 章
10.1 10.2 10.3 10.4 I/O标准流类 标准流类 格式化I/O 格式化 文件流 字符串流
10.1 I/O标准流类 标准流类
预定义流 10.1.2 C++中的流类库 中的流类库
返回首页
语言中, 在C++语言中,数据的输入和输出(简写为 ) 语言中 数据的输入和输出(简写为I/O) 包括对标准输入设备键盘和标准输出设备显示 器 、 对在外存磁盘上的文件和对内存中指定的 字符串存储空间进行输入输出这三个方面。 字符串存储空间进行输入输出这三个方面 。 对 标准输入设备和标准输出设备的输入输出简称 为标准I/O, 为标准 ,对在外存磁盘上文件的输入输出简 称为文件I/O, 称为文件 ,对内存中指定的字符串存储空间 的输入输出简称为串I/O。 的输入输出简称为串 。
返回本节
10.1.2 C++中的流类库 中的流类库
C++语言系统为实现数据的输入和输出定义了一个庞大的类库, 语言系统为实现数据的输入和输出定义了一个庞大的类库, 语言系统为实现数据的输入和输出定义了一个庞大的类库 它 包 括 的 类 主 要 有 ios,istream,ostream,iostream, , , , , ifstream,ofstream,fstream,istrstream,ostrstream , , , , 和 strstream等。 等 其中ios为根基类, 它直接派生四个类 : 输入流类 为根基类, 其中 为根基类 它直接派生四个类:输入流类istream、输出 、 流 类 ostream、 文 件 流 基 类 fstreambase 和 字 符 串 流 基 类 、 strstreambase,输入文件流类 ,输入文件流类ifstream同时继承了输入流类和文 同时继承了输入流类和文 件流基类(当然对于根基类是间接继承),输出文件流类 ofstream同时继承了输出流类和文件流基类 , 输入字符串流类 同时继承了输出流类和文件流基类, 同时继承了输出流类和文件流基类 istrstream同时继承了输入流类和字符串流基类, 输出字符串流 同时继承了输入流类和字符串流基类, 同时继承了输入流类和字符串流基类 同时继承了输出流类和字符串流基类, 类ostrstream同时继承了输出流类和字符串流基类,输入输出流 同时继承了输出流类和字符串流基类 同时继承了输入流类和输出流类, 类iostream同时继承了输入流类和输出流类,输入输出文件流类 同时继承了输入流类和输出流类 fstream同时继承了输入输出流类和文件流基类,输入输出字符串 同时继承了输入输出流类和文件流基类, 同时继承了输入输出流类和文件流基类 流类strstream同时继承了输入输出流类和字符串流基类。 同时继承了输入输出流类和字符串流基类。 流类 同时继承了输入输出流类和字符串流基类
返回本节
10.2.2 使用 成员函数 使用ios成员函数
ios类提供成员函数对流的状态进行检测和进行输入输出格式控制等操 类提供成员函数对流的状态进行检测和进行输入输出格式控制等操 作,每个成员函数的声明格式和简要说明如下: 每个成员函数的声明格式和简要说明如下: int bad(); //操作出错时返回非 值 操作出错时返回非0值 操作出错时返回非 int eof(); //读取到流中最后的文件结束符时返回非 值 读取到流中最后的文件结束符时返回非0值 读取到流中最后的文件结束符时返回非 int fail(); //操作失败时返回非 值 操作失败时返回非0值 操作失败时返回非 void clear(); //清除 清除bad,eof和fail所对应的标志状态,使 所对应的标志状态, 清除 , 和 所对应的标志状态 之恢复为正常状态 //值0,使good标志状态恢复为 标志状态恢复为1 值 , 标志状态恢复为 char fill(); //返回当前使用的填充字符 返回当前使用的填充字符 char fill(char c); //重新设置流中用于输出数据的填充字 重新设置流中用于输出数据的填充字 符为c的值 的值, 符为 的值,返回 //此前的填充字符。系统预设置填充字符为空格 此前的填充字符。 此前的填充字符 long flags(); //返回当前用于 返回当前用于I/O控制的格式状态字 返回当前用于 控制的格式状态字