C++专题总结之输入输出

来源:互联网 发布:使命召唤13优化怎么样 编辑:程序博客网 时间:2024/05/20 23:32
主题 概要 C++基础 C++的I/O部分概括、总结 编辑 时间 新建 20160826 序号 参考资料 1 C++ Primer Plus 2

相对与JAVA,C++的输入输出更加整洁,没有这么多装饰器,更加易于使用和理解。

流和缓冲区

C++程序把输入和输出看作字节流。输入时,程序从输入流中抽取字节;输出时,程序将字节插入到输出流中。流充当了程序和流源或流目标之间的桥梁。也使得程序使用相同的方式处理输入和输出,独立于具体的来源和去向。

管理输入包含两步:
将流与输入去向的程序关联起来;
将流与文件连接起来;

同样,管理输出包含两步:
将输出流连接到程序;
将输出目标与流关联;

流的抽像图如下:
这里写图片描述

通常,为了提高效率,在流的一端为引进一块缓冲区,作为信息从设备传输到程序或程序传输到设备时的临时存储工具。
C++ iostream文件中通过一系列的类来管理流和缓冲区,其中的一些类:
这里写图片描述

streambuf类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内存、刷新缓冲区和管理缓冲区内存的类方法;
ios_base 类表示流的一般特征,如是否可读取、 是二进制流还是文本流等;
ios 类 基于ios_base, 其中每括了一个指向streambuf对象的指针;
ostream类 是从ios类派生而來的,提供了输出方法;
istream类也是从ios类派生而來的,提供了输入方法;
iostream类是基于istream和ostream类的,因此继承了输入方法和输出方法;

要使用这些工具,必须使用适当的类对象,创建这样的对象(如count)将自动打开一个流,自动创建缓冲区,并将其与流关联起来。

C++中已经预定义了8个流对象(4 个用于窄字符流,4 个用于宽字符流),它们是:
cin 对象对应于标准输入流,这个流被关联到标准输入设备(键盘);
cout对象与标准输出流相对应,这个流被关联到标准输出设备(显示器);
cerr对象与标准错误流相对应,关联到标准输出设备,可用于显示错误消息,没被缓冲;
clog对象也对应着标准错误流,这个流被关联到标准输出设备,这个流被缓冲;
与此对应的是宽字符流的4个对象,wcin,wcout,wcerr,wclog。

Cout的使用

重载 << 运算符

<< 运算符的默认含义是按位左移运算符,但 ostream类重新定义了<<运算符,将其重载为输出,示作插入运算符,它能够识别出C++中所有的基本类型和字符串指针类型。
插入运算符的所有化身的返回类型都是ostream &,原型的格式如下:
ostream & operator « (type)
其中,type是要显示的数据的类型。返回类型 ostream &意味着使用该运算符将返回一个指向ostream 的对象。到底指向哪个对象呢?其实就指向调用该运算符的对象。
这里写图片描述

Cin的使用

0 0