iostream.h是input output stream的简写,意思为标准的输入输出流
头文件。它包含:
基本
类模板是一个类模板的集合,其中每个类模板有两个参数:字符类型(charT)参数决定处理的元素类型,而特性参数对每个特定的元素类型提供一些额外的特征。
这个类层级结构中的类模板和它们的字符类型的实例相比,名字前面多了前缀basic_。例如,istream由之实例化而来的类模板名为basic_istream,fstream由之实例化而来的类模板名为basic_istream,等等。唯一的例外是ios_base,因为它本身就是类型无关的,所以它并不基于任何
类模板,而是一个正规类。
iostream(.h)库中集成了两组标准的整个iostream类模板层级结构的实例:一组是面向单
字节的,处理char类型的元素;另一组是面向宽字节的,处理wchar_t类型的元素。
面向单字节(char型)的实例可能是iostream(.h)库更为人所知的一部分。ios、istream和ofstream等类都是面向单字节的。右图是面向单
字节的所有类的名称和关系。
iostream(.h)库中的类很少对其成员的原型使用基本类型,而是通常使用根据其实例的特性定义的类型。对默认的char和wchar_t型的实例,类型streampos、streamoff和streamsize分别用以表示位置、偏移和大小。
操纵符是用来与对流对象进行操作的插入(<<)和提取(>>)运算符一同使用的
全局函数。它们通常变更流的属性和格式设置。endl、hex和scientific是一些操纵符的例子。
其原因是:后缀为.h的头文件C++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,C++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。因此,当使用
时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C++实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。