1 / 14

第十六章 输入/输出流

第十六章 输入/输出流. 课程 要求. 参考 书目. 课程 内容. 课程 练习. 课程内容. 输出流. 面向对象程序设计. 输入流. 课程要求. 参考书目. 返回首页. 16.2 输出流. 输出流 ostream 类提供主要的输出操作。可以通过三种方式来实现流的输出 : (1) 使用在 ostream 类中重载 “ << ” 插入运算符输出基本数据类型的数据,包括字符串和指针类型; (2) 使用 ostream 类的成员函数 put() 输出一个字符; (3) 使用 ostream 类的成员函数 write() 输出一串字符。

abner
Download Presentation

第十六章 输入/输出流

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第十六章 输入/输出流 课程 要求 参考 书目 课程 内容 课程 练习

  2. 课程内容 输出流 面向对象程序设计 输入流 课程要求 参考书目 返回首页 面向对象程序设计

  3. 16.2 输出流 • 输出流ostream类提供主要的输出操作。可以通过三种方式来实现流的输出: • (1) 使用在ostream类中重载“<<”插入运算符输出基本数据类型的数据,包括字符串和指针类型; • (2) 使用ostream类的成员函数put()输出一个字符; • (3)使用ostream类的成员函数write()输出一串字符。 • 类ostream类的类定义如下: prev next back 面向对象程序设计

  4. 16.2 输出流 • 类ostream类的类定义如下: class ostream:virtual public ios{ public: ostream(streambuf *);//定义指向streambuf类对象的指针 ostream& flush(); //将输出流刷新 ostream& seekp(streampos);//移动文件的写指针pptr ostream& seekp(streamoff,ios::seek_dir); ostream& put(char);//向流对象中输出一个字符 stream& write(const signed char*,int);//向流对象中输出n个字符 ostream& write(const unsigned char*,int); streampos& tellp();//返回当前文件写指针pptr的位置 ostream& operator<<(short);//重载插入运算符“<<” ostream& operator<<(int); ostream& operator<<(char); ostream& operator<<(const char*);//针对字符串类型 ostream&operator<<(const void*);//针对指针类型 //…对系统中所有的基本数据类型给出了“<<”运算符的重载定义 }; prev next back 面向对象程序设计

  5. 16.2 输出流 • 16.2.1 使用预定义插入运算符输出 • 在ostream类中重载的插入运算符“<<”仍然是一个双目运算符,有两个操作数,左操作数为ostream类的对象,右操作数为一个系统预定义类型的对象,返回值为所用输出流对象的引用ostream&,目的是为了将几个插入运算符连在一起使用。多种不同的数据类型可以组合在一个语句中,编译时会根据插入运算符“<<”右操作数的数据类型来决定调用哪一个重载的插入运算符“<<”。 • 【例16.2】 prev next back 面向对象程序设计

  6. 16.2 输出流 • 16.2.2 使用成员函数put()输出字符 • 使用ostream类中的put()函数可以输出一个字符,参数可以为字符常量,也可以使用字符变量。由于put()函数的返回值是ostream类对象的引用,所以在一条语句中可以连续调用put()函数。 • 【例16.3】 • 16.2.3 使用成员函数write()输出一串字符 • 使用ostream类中的成员函数write()可以输出一串字符。write()函数有两个参数,第一个参数是待输出的字符串,第二个参数是输出字符串的字符个数。由于write()函数的返回值是ostream类对象的引用,所以在一条语句中可以连续调用write()函数。 • 【例16.4】 prev next back 面向对象程序设计

  7. 16.2 输出流 • 16.2.4 重载插入符输出新的数据类型 • 通过对插入符“<<”和提取符“>>”进行重载就可以支持新的数据类型的输入/输出。 • 【例16.5】 prev next back 面向对象程序设计

  8. 16.3 输入流 • 输入流istream类主要提供输入操作。可以通过三种方式来实现流的输入: • (1) 使用在istream类中重载“>>”提取运算符输入基本数据类型的数据; • (2) 使用istream类的成员函数get()或getline()输入字符序列; • (3) 使用istream类的成员函数read()输入一串字符; • istream类被定义在iostream.h文件中,它的类定义如下: prev next back 面向对象程序设计

  9. 16.3 输入流 class istream:virtual public ios{ public: istream(streambuf *); //定义指向streambuf类对象的指针 istream& get(signed char*,int,char=’\n’); istream& get(unsigned char*,int,char=’\n’); istream& get(streambuf&,char=’\n’); istream& get(signed char &);//从输入流中输入单个字符 istream& get(unsigned char &); int get(); //从输入流中输入下一个字符或EOF istream& getline(signed char*,int,char=’\n’); istream& getline(unsigned char*,int,char=’\n’); istream& read(signed char*,int); istream& read(unsigned char*,int); int peek(); //表示不输入并返回下一个字符 int gcount(); //用来返回上次输入的字符个数 istream& putback(char); prev next back 面向对象程序设计

  10. 16.3 输入流 istream& ignore(int=1,int=EOF); istream& seekg(streampos); //在输入流中移动文件指针 istream& seekg(streamoff,ios::seek_dir); streampos tellg(); //返回当前文件指针的位置 istream& operator>>(short); //重载提取运算符“>>” istream& operator>>(int); istream& operator>>(char); istream& operator>>(const char*); //针对字符串类型 istream&operator>>(const void*); //针对指针类型 //…对系统中所有的基本数据类型给出了“>>”运算符的重载定义 }; prev next back 面向对象程序设计

  11. 16.3 输入流 • 16.3.1 使用预定义提取运算符输入 • 运算符“>>”在istream类中被重载为一个输入符,也称提取运算符,流的输入就是用提取的方法来实现的。它也有两个操作数,在它左操作数为istream类或其派生类的一个对象,其右操作数可以是系统中所有基本数据类型。 • 【例16.6】 prev next back 面向对象程序设计

  12. 16.3 输入流 • 16.3.2 使用成员函数get()或getline()输入字符序列 • 使用istream类中的get()函数可以输入一个字符或一个字符串。 • (1) 不带参数的get()函数从指定的输入流中读取一个字符; • (2) 带一个字符型参数的get()成员函数自动读取输入流中的下一个字符; • (3) 带三个参数的get()成员函数的参数分别是接收字符的字符数组、字符数组的大小和分隔符(默认值为’\n’,可缺省)。 • 使用istream类中的getline()函数可以输入一行字符到字符数组中,然后插入一个空字符。 • 【例16.7】 prev next back 面向对象程序设计

  13. 16.3 输入流 • 16.3.3 使用成员函数read()输入一串字符 • istream类中的成员函数read()表示从输入流中输入一串指定数目的字符。 • read()函数有两个参数,第一个参数是输入字符的字符指针或字符数组,第二个参数是输入字符串的字符个数。 • 由于read()函数的返回值是istream类对象的引用,所以在一条语句中可以连续调用read()函数。 • 【例16.8】 prev next back 面向对象程序设计

  14. 16.3 输入流 • 16.3.4 重载提取符输入新的数据类型 • 为了能够支持新的数据类型的输入。通过对提取符“>>”进行重载就可以支持新的数据类型的输入。 • 【例16.9】 prev next back 面向对象程序设计

More Related