文档视界 最新最全的文档下载
当前位置:文档视界 › 面向对象程序设计(4.2.3)--流类库与输入输出实验

面向对象程序设计(4.2.3)--流类库与输入输出实验

面向对象程序设计(4.2.3)--流类库与输入输出实验
面向对象程序设计(4.2.3)--流类库与输入输出实验

实验十一 流类库与输入/输出

1、 实验目的

1. 熟悉流类库中常用的类及其成员函数的用法。

2. 学习标准输入输出及格式控制;

3. 学习对文件的应用方法(二进制文件、文本文件)。

2、 实验任务

1. 观察以下程序的输出,注意对输出格式的控制方法;

//lab11_1.cpp

#include

using namespace std;

#define D(a) T << #a << endl; a

ofstream T("output.out");

int main() {

D(int i = 53;)

D(float f = 4700113.141593;)

char* s = "Is there any more?";

D(T.setf(ios::unitbuf);)

D(T.setf(ios::showbase);)

D(T.setf(ios::uppercase);)

D(T.setf(ios::showpos);)

D(T << i << endl;)

D(T.setf(ios::hex, ios::basefield);)

D(T << i << endl;)

D(T.unsetf(ios::uppercase);)

D(T.setf(ios::oct, ios::basefield);)

D(T << i << endl;)

D(T.unsetf(ios::showbase);)

D(T.setf(ios::dec, ios::basefield);)

D(T.setf(ios::left, ios::adjustfield);)

D(T.fill('0');)

D(T << "fill char: " << T.fill() << endl;)

D(T.width(8);)

T << i << endl;

D(T.setf(ios::right, ios::adjustfield);)

D(T.width(8);)

T << i << endl;

D(T.setf(ios::internal, ios::adjustfield);)

D(T.width(8);)

T << i << endl;

D(T << i << endl;) // Without width(10)

D(T.unsetf(ios::showpos);)

D(T.setf(ios::showpoint);)

D(T << "prec = " << T.precision() << endl;) D(T.setf(ios::scientific, ios::floatfield);)

D(T << endl << f << endl;)

D(T.setf(ios::fixed, ios::floatfield);)

D(T << f << endl;)

D(T.setf(0, ios::floatfield);)

D(T << f << endl;)

D(T.precision(16);)

D(T << "prec = " << T.precision() << endl;) D(T << endl << f << endl;)

D(T.setf(ios::scientific, ios::floatfield);)

D(T << endl << f << endl;)

D(T.setf(ios::fixed, ios::floatfield);)

D(T << f << endl;)

D(T.setf(0, ios::floatfield);)

D(T << f << endl;)

D(T.width(8);)

T << s << endl;

D(T.width(36);)

T << s << endl;

D(T.setf(ios::left, ios::adjustfield);)

D(T.width(36);)

T << s << endl;

D(T.unsetf(ios::showpoint);)

D(T.unsetf(ios::unitbuf);)

}

2. 编写程序,用二进制方式打开指定的一个文件,在每一行前加行号。

3. (选做)使用实验十中的学生类数组,输入数据,显示出来,使用I/O流把

此数组的内容写入磁盘文件,再显示出文件内容。

3、 实验步骤提示

见《C++语言程序设计(第4版)学生用书》,郑莉等编著,清华大学出版社。

Microsoft Word - 输入输出流类库编程练习题 - 首都

注意:每道题的难度等级不同,*越多,难度等级越高。可以根据自己的能力,选做恰当难度的题。 8.1改写第五章编程练习5.4题的程序,使该程序在程序结束之前,先判断字典内容是否发 生了变化(单词的添加、修改、删除)。如果字典内容已经被修改,则提示是否保存修改后的新字典;若选择保存,则将字典的全部内容写入一个纯文本文件,该文件可以命名为dictionary.txt。每次程序重新运行时,先尝试打开dictionary.txt。如果该文件存在,则打开文件,并从该文本文件中输入产生一个字典。 难度等级:** 8.2编写一个用于统计英文纯文本文件的各项信息:文件内容的总字符数(包括标点符号), 单词个数,文本行数。 要求: 1.提示用户输入一个扩展名为.txt的纯文本文件名,如果指定文件存在,则打开该文 件,否则显示错误提示信息。 2.统计文件内容的上述信息,并显示所统计的信息。信息的显示格式自行确定,例如 可以按如下格式显示: 文件名:Information.txt 字符数:4854 单词数:853 文本行数:56 3.每个文件的信息显示后,提示用户是否继续统计其他文本文件,如果继续,则重复 1和2中的操作。 提示: 1.判断文本行的依据可以是每行的结尾应为‘\n’。 难度等级:*

8.3编写一个程序用于某大学的某信息专业学生的基础课成绩的录入、显示和相应数据文件 的读写。 要求: 1.成绩的按如下顺序录入: ⑴在学生成绩录入之前,先通过输入确定基础课程的门数和课程名称。例如: 基础课程1:高等数学 基础课程2:大学物理 基础课程3:大学英语 基础课程4:C语言程序设计 基础课程5:数据结构 … ⑵每个学生的成绩录入的内容包括学生的姓名、学号、性别和各门课程的成绩。成 绩按照A,B,C,D四个等级划分。录入格式可以参照如下: 姓名:李建国 学号:200410001 性别:男 高等数学:C 大学物理:B 大学英语:C C语言程序设计:B 数据结构:A … 2.保存学生成绩数据的文件的种类和结构、内容如下 ⑴课程信息索引文件courses.inx用于保存所有课程的索引信息,每门课程的索 引信息由课程索引序号和课程名组成。例如: 课程序号课程名 1高等数学 2大学物理 3大学英语 4C语言程序设计 5数据结构 … 注意,课程门数不得少于5门。 ⑵学生信息文件student.inx用于保存所有学生的索引信息,每个学生的索引信息 由学号和学生基本信息(姓名、性别)组成。例如: 学生学号学生基本信息 200410001李建国,男 … ⑶分课程成绩数据索引文件XXX.inx用于保存一门课程的所有学生成绩的索引信 息,每个学生的成绩索引信息由学号和成绩等级组成。每门课程有一个成绩数据 索引文件,文件名XXX由课程名确定。例如: 文件名:“高等数学.inx” 学生学号成绩等级 200410001C

实验十一 流类库与输入/输出

实验十一流类库与输入/输出(2学时) 一、实验目的 1.熟悉流类库中常用的类及其成员函数的用法。 2.学习标准输入输出及格式控制。 3.学习对文件的应用方法(二进制文件、文本文件)。 二、实验任务 1.观察以下程序的输出,注意对输出格式的控制方法; //labll—1.cpp #include Using namespace std; #define D(a)<<#a<

第9章流类库与输入输出

第9章流类库与输入输出 9.1 本章提要 (1)C++语言提供一个用于输入/输出(I/O)操作的类族,这些操作是以对数据敏感 的方式实现的。类族提供了对预定义类型进行输入/输出操作的能力,程序员也 可以利用这个类族进行自定义类型的输入/输出操作。 (2)标准输出操作方法 ①将插入符作用在流对象cout上,可输出显示整型数、浮点数,字符和字符串。 ②使用成员函数put( )可输出一个字符 ③使用成员函数write( )可输出一个字符串 (3)标准输入操作方法 ①将提取符作用在流对象cin上,可输入整型数、浮点数、字符和字符串。 ②使用成员函数get( )可输入一个字符,使用成员函数getline( )可输入—行字符。 ③使用成员函数read( )可读取一个字符串。 (4)格式化输入输出的两种方式 ①使用标志字和成员函数 ②使用操作子 (5)磁盘文件的输入和输出,包括: ①磁盘文件的打开和关闭操作 ②文本文件的读写操作 ③二进制文件的读写操作 ④随机访问数据文件 9.2 程序举例 下面是一个展示用不同方法(使用重载运算符和成员函数)对标准的输入输出流对象(cin和cout)进行操作的例子。 例9-1 用不同方法操作流对象 //ch9_1.cpp 标准设备的输入输出 #include void main() { char buffer1[80],buffer2[80],buffer3[80];

cout<<"Please enter a sentence:"<>buffer1; cout< void main() { //设置整数流的格式和基数 int x=123; cout<<"dec: "<

第12章流类库和输入输出概论

第12章流类库和输入输出 【内容提要】 流的概念及流类库 输入输出的格式控制 输入与输出运算符的重载 文件操作 【重点与难点】 12.1 流的概念及流类库 12.1.1 流的概念 C++中的流是指数据从一个对象传递到另一个对象的操作。从流中读取数据称为提取操作,向流内添加数据称为插入操作。流在使用前要建立,使用后要删除。如果数据的传递是在设备之间进行,这种流就称为I/O流。C++专门内置了一些供用户使用的类,在这些类中封装了可以实现输入输出操作的函数,这些类统称为I/O流类。 C++流预定义了4个标准流类对象,它们可以直接用来输入输出。这些标准流类对象都包含在头文件iostream.h中。 istream cin; //与标准输入设备相关联的标准输入流。 ostream cout; //与标准输出设备相关联的标准输出流。 ostream cerr; //与标准错误输出设备相关联的非缓冲方式的标准输出流。ostream clog; //与标准错误输出设备相关联的缓冲方式的标准输出流。12.1.2 流类库 C++的流类库有两个平行的基类streambuf和ios,其它的流类都是从这两个基类直接或间接派生的。使用这些流类库时,必须包含相应的头文件。 ios类及其派生类为用户提供了使用流类的接口。以下给出ios类及其派生类的层次结构图。 ios istream ifstream istream_withassign iostream istrstream fstream ostream strstream ofstream sdiostream ostream_withassign ostrstream 图12.1 ios类的层次关系 12.2 输入输出的格式控制 C++仍可使用C中的printf()和scanf()进行格式化控制,同时又提供了两种格式化控制的方法,一是使用ios类中的有关格式控制的成员函数,二是使用执行格式化输入/输出的格式控制符。 12.2.1 用ios类的成员函数进行格式控制 使用这种方式进行格式控制主要是通过设置及清除格式状态标志、设置域宽、设置填充字符和设置输出精度的操作来完成的。 设置及清除格式状态标志 格式状态标志说明 ios::skipws跳过输入中的空白,用于输入 ios::left左对齐输出,用于输出

实验六C++的流类库与输入输出

实验 6 C++的流类库与输入输出 一、实验目的 1. 掌握C++格式化的输入输出方法。 2. 掌握重载运算符“<<”和“>>”的方法。 3. 掌握磁盘文件的输入输出方法。 二、实验准备及要求 在开始实验前,应回顾或复习相关内容。 需要一台主算机,其中安装有Visual C++ 6.0集成开发环境软件。 三、实验内容与结果 1. 下面给出的test7_1_1.cpp程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运行后,能够输出如下所示的九九乘法表。 * 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81 //test7_1_1.cpp #include #include using namespace std; int main() { int i,j; cout<<"*"<<"\t"; for(i=1;i<=9;i++)

cout< #include using namespace std; int main() { char ch; int i=0; ifstream file; file.open(“xyz.txt”,ios::in); if( !file ) { cout<<”xyz.txt cannot open”<

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 )。 A.ifstream B.fstream C.ostream D.cstdio 3.2执行以下程序: char *str; cin>>str; cout<

实验八 流类库与输入输出

实验报告 课程:面向对象技术学号:1010431079 姓名:郝祥海 班级:2010级计算机软件(嵌入式系统)1班 教师:周晓 计算机科学与技术系

实验八流类库与输入输出 一、实验目的及要求 1.熟悉流类库中常用的类及其成员函数的用法; 2.掌握标准输入/输出及格式控制; 3.掌握对文件的应用方法。 二、实验环境 硬件:计算机软件:Microsoft Visual C++ 三、实验内容 1.声明一个学生类数组,输入数据,显示出来,使用I/O流把此数组的内容写入磁盘文件,再显示出文件内容。学生类具有的属性如下:姓名name、学号number、班号classno、性别sex、出生日期birthday,其中“出生日期”声明为一个“日期”类内嵌子对象。 四、实验结果(附截图) 五、总结 通过本次实验,我了解到流是一种抽象,它负责在数据的生产者和消费者之间建立联系,并管理数据的流动。我对文件的输入输出流有了更深的了解。 六、附录(源程序清单) #include #include #include using namespace std; class Student{

public: Student(string n,int nu,int cl,char s); string GetName(){return name;} int GetNumber(){return number;} int GetClassno(){return classno;} char GetSex(){return sex;} private: string name; int number; int classno; char sex; }; Student::Student(string n,int nu,int cl,char s):name(n),number(nu),classno(cl),sex(s){} int main(){ Student a[3] = {Student("Frank",101,1,'M'), Student("Lucy",201,2,'W'), Student("Mike",301,3,'M')}; int i; for(i=0;i<3;i++) { cout << "姓名\t" << a[i].GetName() << "\t学号\t" << a[i].GetNumber() << "\t班号\t" << a[i].GetClassno() <<"\t性别\t"<

面向对象程序设计(4.2.3)--流类库与输入输出实验

实验十一 流类库与输入/输出 1、 实验目的 1. 熟悉流类库中常用的类及其成员函数的用法。 2. 学习标准输入输出及格式控制; 3. 学习对文件的应用方法(二进制文件、文本文件)。 2、 实验任务 1. 观察以下程序的输出,注意对输出格式的控制方法; //lab11_1.cpp #include using namespace std; #define D(a) T << #a << endl; a ofstream T("output.out"); int main() { D(int i = 53;) D(float f = 4700113.141593;) char* s = "Is there any more?"; D(T.setf(ios::unitbuf);) D(T.setf(ios::showbase);) D(T.setf(ios::uppercase);) D(T.setf(ios::showpos);) D(T << i << endl;) D(T.setf(ios::hex, ios::basefield);) D(T << i << endl;) D(T.unsetf(ios::uppercase);) D(T.setf(ios::oct, ios::basefield);) D(T << i << endl;) D(T.unsetf(ios::showbase);) D(T.setf(ios::dec, ios::basefield);)

D(T.setf(ios::left, ios::adjustfield);) D(T.fill('0');) D(T << "fill char: " << T.fill() << endl;) D(T.width(8);) T << i << endl; D(T.setf(ios::right, ios::adjustfield);) D(T.width(8);) T << i << endl; D(T.setf(ios::internal, ios::adjustfield);) D(T.width(8);) T << i << endl; D(T << i << endl;) // Without width(10) D(T.unsetf(ios::showpos);) D(T.setf(ios::showpoint);) D(T << "prec = " << T.precision() << endl;) D(T.setf(ios::scientific, ios::floatfield);) D(T << endl << f << endl;) D(T.setf(ios::fixed, ios::floatfield);) D(T << f << endl;) D(T.setf(0, ios::floatfield);) D(T << f << endl;) D(T.precision(16);) D(T << "prec = " << T.precision() << endl;) D(T << endl << f << endl;) D(T.setf(ios::scientific, ios::floatfield);) D(T << endl << f << endl;) D(T.setf(ios::fixed, ios::floatfield);) D(T << f << endl;) D(T.setf(0, ios::floatfield);) D(T << f << endl;) D(T.width(8);) T << s << endl; D(T.width(36);) T << s << endl; D(T.setf(ios::left, ios::adjustfield);)

相关文档
相关文档 最新文档