13.3输入和输出 ios的派生类 istream提供了创建输入流以及从流中提取数据 的手段;ios的派生类 ostream提供了创建输出流以及向流中 插入数据的手段;ios的派生类 iostream则同时提供了上述两 种手段。由于 iostream的主要作用是用来派生其它类的,在 格式化MO中通常不涉及该类。 对于格式化MO,类 istream和 ostream通过对运算符“>>” 和“<<”的多次重载,提供了对3大类13种数据类型的WO 操作。 字符型: signed char, unsigned char 字符串型: signed char*, unsigned char* 数值型: short, unsigned short,int, unsigned,long, unsign-ed long, float, double, long double
13.3 输入和输出 ios 的派生类 istream 提供了创建输入流以及从流中提取数据 的手段; ios 的派生类 ostream 提供了创建输出流以及向流中 插入数据的手段; ios 的派生类 iostream 则同时提供了上述两 种手段。由于 iostream 的主要作用是用来派生其它类的,在 格式化 I/O 中通常不涉及该类。 对于格式化 I/O,类 istream 和 ostream 通过对运算符 “>>” 和 “<<” 的多次重载,提供了对 3 大类 13 种数据类型的 I/O 操作。 字符型:signed char, unsigned char 字符串型:signed char*, unsigned char* 数值型:short, unsigned short, int, unsigned, long, unsign-ed long, float, double, long double
13.3.1格式化输入 格式化输入是指通过 istream的对象,利用重载了的“>>”运 算符来实现的。 最常用的格式化输入是对标准流cin的提取操作。在应用程序 中也可以定义用户自己的输入流类。但由于定义用户流时将涉 及到对流缓冲区 streambuf的操作,且实用价值不大,因此本 课程对此不作介绍。 格式化输入的缺省格式为:十进制(ios:dec)、跳过前导空 白字符(os:Ws)
13.3.1 格式化输入 格式化输入是指通过 istream 的对象,利用重载了的 “>>” 运 算符来实现的。 最常用的格式化输入是对标准流 cin 的提取操作。在应用程序 中也可以定义用户自己的输入流类。但由于定义用户流时将涉 及到对流缓冲区 streambuf 的操作,且实用价值不大,因此本 课程对此不作介绍。 格式化输入的缺省格式为:十进制(ios :: dec)、跳过前导空 白字符(ios :: ws)
13.32输入操作函数 int istream: geto istream& istream: get(signed char&) istream& istream get(unsigned char &) istream& istream: get(signed char*, int, char ="n) istream& istream: get(unsigned chark, int, char =n) 后4个成员函数所以返回对流 istream的引用,是为了便于进 “串联”输入。这实际上是流类成员函数重载的“标准” 形式。第一个函数的值为一整型数据,其目的是为了能够读取 文件结束标志EOF。该标志是C++语言预定义的一个宏: #define EOF
13.3.2 输入操作函数 int istream :: get(); istream& istream :: get(signed char&); istream& istream :: get(unsigned char&); istream& istream :: get(signed char*, int, char = '\n'); istream& istream :: get(unsigned char*, int, char = '\n'); 后 4 个成员函数所以返回对流 istream 的引用,是为了便于进 行 “串联” 输入。这实际上是流类成员函数重载的 “标准” 形式。第一个函数的值为一整型数据,其目的是为了能够读取 文件结束标志 EOF。该标志是 C++ 语言预定义的一个宏: #define EOF -1
include <ⅰ ostream. h> void maino char ch, str[81: cin. get(str, 81) cout < str < endl while(cn.getl="Wn);∥重要! cin >>ch. cout < ch < endl
#include <iostream.h> void main() { char ch, str[81]; cin.get(str, 81); cout << str << endl; while(cin.get() != '\n'); // 重要! cin >> ch; cout << ch << endl; }
为了方便字符串的输入, istream中还说明了几个主要用于输 入字符串的非格式化成员函数: istream& istream: getline(signed char, int, char =n) istream& istream: getline(unsigned char, int, char='In) istream& istream ignore(int =1, int EOF) int istream. gcounto
为了方便字符串的输入,istream 中还说明了几个主要用于输 入字符串的非格式化成员函数: istream& istream :: getline(signed char*, int, char = '\n'); istream& istream :: getline(unsigned char*, int, char='\n'); istream& istream :: ignore(int = 1, int = EOF); int istream :: gcount();