第九章C++的I/O流库 主要内容 ●流的基本概念:C+十流的基本概念、C++流类库的结构以及预定义的4各流对象 ·输出流:预定义的插入符的基本语法格式、输出指针类型的地址,以及put()函数和 write()函数。 ●输入流:预定义的提取符的基本语法格式,以及get()函数、getline()函数和read ()函数 ●自定义输入输出(插入符和提取符的重载):重载为友元函数的插入符和提取符的格式 及其调用方法 ●输入输出的格式控制:使用各种流类中有关格式控制的成员函数设置标志位,以及使 用流类库提供的操作子进行格式控制 ●磁盘文件的输入和输出:磁盘文件的打开和关闭操作、文本文件的读写操作、二进制文 件的读写操作,以及随机访问数据文件。 ●字符串流:将串对象中的一个字符串内的数字字符转换成二进制形式存储在某种类型的 对象中,以及将一个二进制数据转换成字符存储在一个字符数组对象中的操作。 ●流错误的处理:流状态字和状态函数以及清除/设置流状态字 填空 1C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream:提 供了基本的/O类。I/O操作分别由两个类istream和①提供,由它们派生除一个类②, 提供双向I/O操作。 A fstream B iostream C ostream D cin 答案:①C ②B 2己知inta,pa=&a;输出指针pa十进制的地址值的方法是一。 A cout<<pa; B cout<<*pa; C cout<<&pa; D cout<<long(&pa); 答案:D 注释:答案A输出了指针pa本身的值,即变量a的地址值:答案B输出了指针pa所指向 的对象,即变量a的值:答案C以十六进制形式输出了指针pa的地址值。 3若己知char str[20,有语句cin>.str, 当输入为:This is a program,所得到的结果是str=_ AThis is a program B This C This is D This is a 答案:B 注释:提取符可以从输入流中读取一个字符序列,即一个字符串。在处理这种字符序列时, 字符串被认为是一个以空白符结束的字符序列。因此本题得到的输入仅仅是第一个空白符之 前的字符序列This。 4内部格式控制操作函数是在头文件中定义的。 A iostream.h B iomanip.h C istream.h D ostream.h 答案:B 5进行文件操作需包含头文件。 A fstream.h B ostream.h C stdio.h D stdlib.h 答案:A
第九章 C++的 I/O 流库 主要内容 z 流的基本概念:C++流的基本概念、C++流类库的结构以及预定义的 4 各流对象 z 输出流:预定义的插入符的基本语法格式、输出指针类型的地址,以及 put()函数和 write()函数。 z 输入流:预定义的提取符的基本语法格式,以及 get()函数、getline()函数和 read ()函数 z 自定义输入/输出(插入符和提取符的重载):重载为友元函数的插入符和提取符的格式 及其调用方法 z 输入/输出的格式控制:使用各种流类中有关格式控制的成员函数设置标志位,以及使 用流类库提供的操作子进行格式控制 z 磁盘文件的输入和输出:磁盘文件的打开和关闭操作、文本文件的读写操作、二进制文 件的读写操作,以及随机访问数据文件。 z 字符串流:将串对象中的一个字符串内的数字字符转换成二进制形式存储在某种类型的 对象中,以及将一个二进制数据转换成字符存储在一个字符数组对象中的操作。 z 流错误的处理:流状态字和状态函数以及清除/设置流状态字 填空 1 C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream提 供了基本的I/O类。I/O操作分别由两个类istream和 ① 提供,由它们派生除一个类 ② , 提供双向I/O操作。 A fstream B iostream C ostream D cin 答案:① C ② B 2 已知 int a,*pa=&a;输出指针 pa 十进制的地址值的方法是 。 A cout<<pa; B cout<<*pa; C cout<<&pa; D cout<<long(&pa); 答案:D 注释:答案 A 输出了指针 pa 本身的值,即变量 a 的地址值;答案 B 输出了指针 pa 所指向 的对象,即变量 a 的值;答案 C 以十六进制形式输出了指针 pa 的地址值。 3 若已知 char str[20]; 有语句 cin>.str; 当输入为:This is a program,所得到的结果是 str= 。 A This is a program B This C This is D This is a 答案:B 注释:提取符可以从输入流中读取一个字符序列,即一个字符串。在处理这种字符序列时, 字符串被认为是一个以空白符结束的字符序列。因此本题得到的输入仅仅是第一个空白符之 前的字符序列 This。 4 内部格式控制操作函数是在头文件 中定义的。 A iostream.h B iomanip.h C istream.h D ostream.h 答案:B 5 进行文件操作需包含头文件 。 A fstream.h B ostream.h C stdio.h D stdlib.h 答案 :A 1
6当使用ifstream流定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为一。 A ios::in B ios::out C ios::inlios:out D ios::binary 答案:A 注释:使用ofstream类打开文件时,隐含打开方式是ios:out:使用fstream类打开文件时, 隐含打开方式是ios:inios::out:ios:binary是以二进制方式打开文件。 填空 1C++的输入输出是以字节流的形式实现的。在C十+流类库中,根基类为0s类。 2与系统中标准设备对应的四个对象是cin、cout、cerr和clog 3重载运算符函数operator>.>的一般格式为 istream&operator>>(istream&s,type&p) ∥操作代码 return s: 4头文件fstream.h中包含了处理用户控制文件操作所需要的信息。 阅读程序 1写出运行结果 include <iostream.h> include <iomanip.h> void main() cout<<hex<<100<<endl: cout<<oct<<10<<endl: cout<<setfill(x')<<setw(10): cout<<100<<"hi"<<endl: } 答案: 64 12 xxxxxxx144hi 注释:基数操作子hex和oct表示对数值数据分别采用I6和8进制表示,直至下一个表示 基数的操作子出现。因此,第三行输出100的8进制表示是144。默认的表示基数的操作子 是10进制dec。 操作子stw(10)将输出数据的域宽设为10,而操作子setfill('x)则表示以'x字符填充 当前数据项的域宽。 注意:setw()只对最靠近它的输出起作用,最后一项输出为hi。 2 include <iostream.h> include<fstream.h> void main ( char str[100]; 2
6 当使用 ifstream 流定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为 。 A ios::in B ios::out C ios::in|ios::out D ios::binary 答案:A 注释:使用 ofstream 类打开文件时,隐含打开方式是 ios::out;使用 fstream 类打开文件时, 隐含打开方式是 ios::in|ios::out;ios::binary 是以二进制方式打开文件。 填空 1 C++的输入/输出是以字节流的形式实现的。在C++流类库中,根基类为ios类。 2 与系统中标准设备对应的四个对象是 cin 、 cout 、cerr和clog 3 重载运算符函数 operator>>的一般格式为 istream& operator>>(istream& s,type& p) { //操作代码 return s: } 4 头文件fstream.h中包含 了处理用户控制文件操作所需要的信息。 阅读程序 1 写出运行结果 # include <iostream.h> # include <iomanip.h> void main() { cout<<hex<<100<<endl; cout<<oct<<10<<endl; cout<<setfill(‘x’)<<setw(10); cout<<100<<”hi”<<endl; } 答案: 64 12 xxxxxxx144hi 注释:基数操作子 hex 和 oct 表示对数值数据分别采用 16 和 8 进制表示,直至下一个表示 基数的操作子出现。因此,第三行输出 100 的 8 进制表示是 144。默认的表示基数的操作子 是 10 进制 dec。 操作子 setw(10)将输出数据的域宽设为 10,而操作子 setfill(’x’)则表示以’x’字符填充 当前数据项的域宽。 注意:setw()只对最靠近它的输出起作用,最后一项输出为 hi。 2 #include <iostream.h> # include<fstream.h> void main () { char str[100]; 2
fstream out("abc.txt""ios::in ios::out); out<<"abcdefg"; out.put("\n'): out.seekp(0); while (!out.eof()) { out.getline*str,100); cout<<str: } cout<<endl: } 答案:abcdefgl23456 建立一个输入输出文件流out,向其中写入“abcdefg\nl23456”,定位于文件头,从中一行一 行地读出字符并显示。 程序设计 编写一个程序,能够一屏一屏地简单浏览指定的文本文件 参考答案: include <iostream.h> include<fstream.h> include<stdio.h> include<stdlib.h> void main() { int r;char c; fstream file: char fn[10],buf[100]; cout<输入文件名:”, cin>>fn: file.open(fn,ios::nocreatelios::in); if(!file) cout<”指定的文件不存在”<endl; abort(). } while (!file.eof()) { 0; while(!file.eof()&&r<23) { file.getline(buf,100); cout<<buf<<endl: r++; 3
fstream out(“abc.txt”’ios::in|ios::out); out<<”abcdefg”; out.put(‘\n’); out.seekp(0); while (!out.eof()) { out.getline*str,100); cout<<str; } cout<<endl; } 答案:abcdefg123456 建立一个输入输出文件流 out,向其中写入“abcdefg\n123456”,定位于文件头,从中一行一 行地读出字符并显示。 程序设计 编写一个程序,能够一屏一屏地简单浏览指定的文本文件 参考答案: # include <iostream.h> # include<fstream.h> # include<stdio.h> # include<stdlib.h> void main( ) { int r;char c; fstream file; char fn[10],buf[100]; cout<<”输入文件名:”; cin>>fn; file.open(fn,ios::nocreate|ios::in); if(!file) { cout<<”指定的文件不存在”<<endl; abort(); } while (!file.eof()) { r=0; while(!file.eof() && r<23) { file.getline(buf,100); cout<<buf<<endl; r++; } 3
printf("Press a key..."); c=getchar(); file.close(), } 程序执行结果(本题程序的文件名为ch8-8.cpp) 输入文件名:ch8-8.cpp include <iostream.h> include<fstream.h> include<stdio.h> include<stdlib.h> void main() { int r;char c; fstream file: char fn[10],bufT100]; cout<输入文件名:”, cin>>fn; file.open(fn,ios::nocreatelios::in); if(!file) { cout<”指定的文件不存在”<<endl; abort(); } while (!file.eof() { r=0: while(!file.eof()&&r<23) { file.getline(buf,100); Press a key... 4
printf(“Press a key…”); c=getchar(); } file.close(); } 程序执行结果(本题程序的文件名为 ch8-8.cpp ) 输入文件名:ch8-8.cpp # include <iostream.h> # include<fstream.h> # include<stdio.h> # include<stdlib.h> void main( ) { int r;char c; fstream file; char fn[10],buf[100]; cout<<”输入文件名:”; cin>>fn; file.open(fn,ios::nocreate|ios::in); if(!file) { cout<<”指定的文件不存在”<<endl; abort(); } while (!file.eof()) { r=0; while(!file.eof() && r<23) { file.getline(buf,100); Press a key… 4