CPP I/O
本文已经搬至https://bobliu0518-blog.netlify.com/post/2017-07-01-cpp-io
今天我想分享一下 C++ 11 的输入/输出(简称I/O)。
目录
简介
管理流和缓冲区的工作有点复杂,但
iostream
(以前为iostream.h
)文件中包含一些专门设计用来实现、管理流和缓冲区的类。streambuf
类为缓冲区提供了内存,并提供了用于填充缓冲区、访问缓冲区内容、刷新缓冲区和管理缓冲区内存的类方法;ios_base
类(ios是io-stream,和Apple的操作系统iOS没关系)表示了流的一般特征,如是否可读取、是二进制流还是文本、管理流等;;ios
类基于ios_base
,其中包括了一个指向streambuf
对象的指针成员;ostream
类是从ios
类派生而来的,提供了输出方法;istream
类也是从ios类派生而来的,提供了输入方法;iostream
类是基于istream
和ostream
类的,因此继承了输入方法和输出方法。
C++的iostream
类库管理了很多细节。例如,在程序中包含iostream
文将会自动创建8个流对象(4个用于窄字符流,4个用于宽字符流)(cin,cout,cerr,clog)。
C++在头文件fstream
(以前为fstream.h
)中定义了多个新类,其中包括用于文件输入的ifstream
和用于文件输出的ofstream
。C++还定义了一个fstream
类,用于同步文件I/O。这些类都是从头文件iostream
中的类派生而来的,因此这些新类的对象可以使用前面介绍过的方法。
(引用自C++ Primer Plus 第六版 中文版 第十七章)
使用iostream
cin
:标准输入流cout
:标准输出流cerr
:标准错误流(不缓冲)clog
:标准错误流(缓冲)
在他们前面加上”w”(即wcin
等)即可处理wchar_t
类型。
代码示例:
//io1.cpp
#include<iostream>
int main()
{
using namespace std;
int a,b;
char str[20];
cerr<<"Input 2 integers:";
cin>>a>>b;
if(a=