2024年4月28日发(作者:)

第九章 输入输出流

一 、输入输出(IO)流的概念

1. 标准IO:对系统指定的标准设备的输入输出,例如键盘作为输入设备,屏幕作为输出设备,

简称标准IO。

2. 文件IO:对磁盘文件进行输入输出,简称文件IO。

3. 串IO:对内存空间进行输入输出,通常把一个字符数组作为存储空间,称为字符串输入输

出,简称串IO。

二、流对象

c++把程序中数据的流动抽象为“流”对象进行管理,简称流。

数据从键盘或磁盘文件流入程序,这样的流称为输入流。

数据从程序流出到屏幕或磁盘文件,这样的流称为输出流。

实际上不论输入还是输出的数据,都要在内存开辟一个缓冲区,流对象与内存缓冲区相对应

的。

三、流类库

ios是抽象基类,派生出istream和ostream,分别处理输入与输出。

iostream类双继承自istream和ostream,它没有添加新成员,只是把istream和ostream综

合在一起。

头文件定义了ios类、istream类、ostream类、iostream类,定义了cin、cout、

cerr、clog等流对象。

cin:istream类对象,代表标准输入。

cout:ostream类对象,代表标准输出。

“<<”和“>>”本来是位运算的运算符,在iostream头文件中被重载为成员函数,它们的

方向正好代表了数据的流向。

四、常用IO操作

1. 标准输入流cin,除了使用“>>”运算符,还可以使用“get”成员函数。

不带参数的get函数,提取一个字符,作为返回值。

带一个参数的get函数,参数是一个变量,提取一个字符给参数变量,成功返回非0,失败

返回0。

例:x=();

char y[50];

e(y,50,'n'); //常用格式,回车结束,最长输入49个字符

e(y,50,'.'); //输入一句话到y,此时句子中可以有空格也可以有回车换行,直到

碰到句号“.”才停止输入

2. 标准输出流cout

五、重载“<<”与“>>”运算符

流操作符一般重载为自定义类的友元函数,重载后可以方便的使用cout和cin输入输出自定

义类的对象。

例:

#include

using namespace std;

class person;

ostream & operator <<(ostream& os,person& t);

istream & operator >>(istream& os,person& t);

class person

{

private:

char name[20];

int age;

public:

};

ostream & operator <<(ostream& os,person& t)

{

}

istream & operator >>(istream &is,person &t)

{

}

void main()

cout<<"name:";

is>>;

cout<<"age:";

is>>;

return is;

os<<"name:"<<<<" "<<"age:"<<;

return os;

friend ostream& operator<<(ostream& os,person& t);

friend istream& operator>>(istream& os,person& t);

void display()

{

}

person(char *p="",int a=0):age(a)

{

}

strcpy(name,p);

cout<<"name:"<

{

}

注:

这里必须把友元函数在前面声明一下或者把友元的定义写在类内,这是VC60的问题,其实

没有语法要求必须这样。友元函数的类外声明可以放在类的头文件中。

person x;

cin>>x;

cout<