38.4 I/O操作
I/O操作的复杂性反映了习惯沿革、对I/O性能要求以及人们各种各样的需求。本节介绍的内容基于常规的英语小字符集(ASCII)。处理不同字符集和不同自然语言的方法将在第39章介绍。
38.4.1 输入操作
输入操作由istream提供,除了那些读取数据存入string的操作外,其他操作都定义在<istream>中。basic_istream主要作为更专用的输入类(如istream和istringstream)的基类:
对istream的用户而言,sentry类属于库的实现细节。它为标准库输入操作和用户自定义输入操作提供了公用代码。那些需要首先执行的代码(“前缀代码”)——例如刷新连接的流的代码——是以sentry的构造函数的方式提供的。例如:
sentry是供输入操作的实现者而非其用户使用的。
38.4.1.1 格式化输入
格式化输入功能主要由<<(“输入”、“获取”或“提取”)运算符提供:
istream(以及ostream)是“了解”内置类型的,因此x如果是一个内置类型,cin>>x意味着cin.operator>>(x)。如果x是一个用户自定义类型,cin>>x意味着operator>>(cin,x)(见18.2.5节)。即,iostream输入是类型敏感的、天生类型安全的且可扩展的。新类型的设计者可提供相应的I/O操作而无需直接访问iostream的实现。 ...
Get C++程序设计语言(第4部分:标准库)(原书第4版) now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.