I/O流——对象和类入门

来源:互联网 发布:mac如何打开xml文件 编辑:程序博客网 时间:2024/05/18 15:52
I/O指的是程序的输入和输出。输入可自键盘或者一个文件中获得,输出可以发送至屏幕或文件。

1、 流和基本文件I/O
      流(stream)是一个由字符(或者其他类型的数据)构成的“流(flow)”。如果流向程序,就成为输入流,如果流出程序就成为输出流。
      文件I/O 从一个文件获取输入,称为读取文件,将输出发送给文件成为写入文件。输入文件流(input-file stream),和输出文件流(output-file stream)的类型名称分别为 ifstream和ofstream,包含在头文件 fstream中。
      流文件必须连接到一个文件,成为打开文件,使用一个名为open的函数完成。调用方法为:
ifstream in_stream;
instream.open("filename"); 程序可以使用提取操作符>>从文件中获取输入,例如:
int one_number,another_number;
in_steram>>one_stream>>another_number;
      输出流采用相同的方式打开文件,例如:
ofstream out_stream;
out_stream.open("filename"); 程序可以使用插入操作符<<将输出发送到文件中,例如:
out_stream<<"one_number="<<one_number<<endl;
out_stream<<"another_number="<<another_number<<endl;
      文件关闭调用close函数。fail函数可以检验文件是否打开成功。
      执行exit语句时,根据约定,如果是因为一个错误而调用exit,则语句形式为 exit(1),否则为exit(0)。
      类与对象  对象是一个变量,和它关联的既有函数,也有数据。与对象关联的函数称为成员函数。

2、 流I/O工具
      用流函数格式化输出 调用一些函数,将程序的输出布成为输出的格式。例如:(cout是输出流的名称)
cout.setf(ios::fixed);    setf函数表示设置标志(set flag)  (fixed表示不用e记数法)
cout.setf(ios::showpoint);   
cout.precision(2);    输出流中的precision(n),表示保留n位有效数字
      操纵元  是一种以非传统方式调用的函数。流操纵元随即要调用一个成员函数。操纵元位于插入操作符<<之后。从表面看,操纵元函数调用就是要输出的下一个项目。操纵元设置会一直生效,直到被重置为其他值,使用操纵元要包含 #include <iomanip> 和 using namespace std;
      流作为函数实参  唯一的限制是函数的形参必须是传引用调用的。流参数不能是一个传值调用参数。例如:
void make_neat(ifstream& messy_file, ofstream& neat_file); 其中messy_file和neat_file分别是输入文件和输出文件流,使用传引用调用方式。

3、 字符I/O
      get和put成员函数  get函数允许程序读取输入的一个字符,将它存储到char类型的一个变量中,每个输入流都提供了get成员函数。成员函数get取一个char类型的变量作为参数,该参数将用于接收从输入流读取的输入字符,例如:
char next_symbol;
cin.get(next_symbol);
      程序能以这种方式读取任何字符。成员函数put类似于get,用于输出,put允许程序输出一个字符,put函数取一个char类型的参数,参数的值会被输出到流。

4、  继承
      一个类自另一个类派生,是指派生类是在另一个类上添加新特性而得到的。即:类A是类B的派生类,则类A具有类B的全部特性,并且还新增了一些特性。
      流类之间的继承关系  ifstream是istream的派生类,在函数调用中,istream类型的参数可以替换为ifstream类型的参数。如果像定义一个函数,要求它去一个输入流作为实参,并希望实参在某些情况下是cin流,在另一些情况下是输入文件流没救应该用istream类型的形参。但是ifstream作为实参时,必须声明ifstream类型。输出流ostream也类似。
      派生类经常借助继承关系和家族关系来讨论。如果类B是类A的派生类,则类B是类A的子,类A是类B的父。我们可以说,派生类继承了父类的成员函数。 
0 0
原创粉丝点击