第17章 输入、输出和文件
17.1 C++输入和输出概述
可以在C++程序中使用stdio:h文件(较新的实现使用头文件cstdio)。
C++的I/O解决方案在头文件iostream(以前为iostream.h)和fstream(以前为fstream.h)中定义一组类。
17.1.1 流和缓冲区
C++程序通常在用户发送换行符时刷新输出缓冲区。
C++程序通常在用户按下回车键时刷新输入缓冲区。
17.1.2 流缓冲区和iostream文件
-
streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法:
-
ios_base类表示流的一般特征,如是否可读取、是二进制流还是文本流等;
-
ios类基于ios_base,其中包括了一个指向streambuf对象的指针成员;
-
ostream类是从ios类派生而来的,提供了输出方法;
-
istream类也是从ios类派生而来的,提供了输入方法:
-
iostream类是基于istream 和ostream类的,因此继承了输入方法和输出方法。
-
cin对象对应于标准输入流。在默认情况下,这个流被关联到标准输入设备(通常为键盘)。
-
couf对象与标准输出流相对应。在默认情况下,这个流被关联到标准输出设备(通常为显示器)。
-
cerr对象与标准错误流相对应,可用于显示错误消息。在默认情况下,这个流被关联到标准输出设备(通常为显示器)。这个流没有被缓冲,这意味着信息将被直接发送给屏幕,而不会等到缓冲区填满或新的换行符。
-
clog对象也对应着标准错误流。在默认情况下,这个流被关联到标准输出设备(通常为显示器)。这个流被缓冲。
-
wcin对象与此类似,但处理的是wchar_t类型。
17.2 使用cout进行输出
17.2.1 重载的<<运算符
ostream类都提供了operator<<()函数的定义:unsigned char、signed char、char、short、unsigned short、int、unsiged int、long unsigned、long、long long (C++11)、unsigned long long (C++11)、float、double、long double、const signed char *、const unsigned char *、const char *、void *。
对于其他类型的指针,C++将其对应于void *,并打印地址的数值表示。
17.2.2 其他ostream方法
ostream &put(char); //显示字符
basic_ostreamk<charT,traits> &write(const char_type *s, streamsize n); //第一个参数提供了要显示的字符串的地址,第二个参数指出要显示多少个字符。