个人觉得C++的iostream用起来是非常方便的,只需要使用简单的<<和>>运算符就可以方便的 进行各种类型的数据的格式化输入输出。而且C++中的iostream在编译阶段完成输入输出的格式化解析的,比C 中的printf()和scanf()在运行时格式化解析要更加安全和强大。在这个系列中我就来详细的介绍一下C++中各 种输入输出流的用法。
首先来大致了解一下C++中的iostreams,我们用到的所有的相关的内容都会定 义在下面的这些头文件里:
<fstream> <iomanip> <ios> <iosfwd> <iostream> <istream> <ostream> <sstream> <streambuf> <strstream>
这其中我们用到最多的可能就是<iostream>,毕 竟几乎任何C++的教程都会以这个基础。当然这个头文件里面还有一些我们可能没有用到过的全局对象,在这 里也全部列出来:
cerr Specifies the cerr global stream. cin Specifies the cin global stream. clog Specifies the clog global stream. cout Specifies the cout global stream. wcerr Specifies the wcerr global stream. wcin Specifies the wcin global stream. wclog Specifies the wclog global stream. wcout Specifies the wcout global stream.
这些都是全局的对象,在包含了<iostream> 之后我们就可以直接使用这些对象。至于怎么使用这些对象就不说了。
因为我们在头文件中常常只写 一些声明,而不喜欢在头文件中去引用全局对象,因为这样会涉及到对象的初始化问题,这是个比较复杂的问 题,幸运的是,C++的iostreams的设计者以一套非常完善的方法来解决了这个问题,基本上我们可以在需要的 时候(例如在头文件中声明重载<<运算符的函数)在头文件中任意的去include这些库头文件而不会出 现问题。但是其实C++标准库已经为我们提供了一个更为规范的头文件,向前引用声明(Declare forward references)头文件<iosfwd>。在这个头文件中只有一些声明,并不包含定义,当我们需要在头文件中 向前引用申明的时候,就可以包含这个头文件。查看这个头文件的内容也可以让我们清楚的了解到各种类的原 型,这个头文件中的部分内容如下:
类型声明:
typedef T1 streamoff; typedef T2 streamsize; typedef fpos streampos; // wchar_t TYPE DEFINITIONS typedef basic_ios<char, char_traits<char> > ios; typedef basic_streambuf<char, char_traits<char> > streambuf; typedef basic_istream<char, char_traits<char> > istream; typedef basic_ostream<char, char_traits<char> > ostream; typedef basic_iostream<char, char_traits<char> > iostream; typedef basic_stringbuf<char, char_traits<char> > stringbuf; typedef basic_istringstream<char, char_traits<char> > istringstream; typedef basic_ostringstream<char, char_traits<char> > ostringstream; typedef basic_stringstream<char, char_traits<char> > stringstream; typedef basic_filebuf<char, char_traits<char> > filebuf; typedef basic_ifstream<char, char_traits<char> > ifstream; typedef basic_ofstream<char, char_traits<char> > ofstream; typedef basic_fstream<char, char_traits<char> > fstream; // wchar_t TYPE DEFINITIONS typedef basic_ios<wchar_t, char_traits<wchar_t> > wios; typedef basic_streambuf<wchar_t, char_traits<wchar_t> > wstreambuf; typedef basic_istream<wchar_t, char_traits<wchar_t> > wistream; typedef basic_ostream<wchar_t, char_traits<wchar_t> > wostream; typedef basic_iostream<wchar_t, char_traits<wchar_t> > wiostream; typedef basic_stringbuf<wchar_t, char_traits<wchar_t> > wstringbuf; typedef basic_istringstream<wchar_t, char_traits<wchar_t> > wistringstream; typedef basic_ostringstream<wchar_t, char_traits<wchar_t> > wostringstream; typedef basic_stringstream<wchar_t, char_traits<wchar_t> > wstringstream; typedef basic_filebuf<wchar_t, char_traits<wchar_t> > wfilebuf; typedef basic_ifstream<wchar_t, char_traits<wchar_t> > wifstream; typedef basic_ofstream<wchar_t, char_traits<wchar_t> > wofstream; typedef basic_fstream<wchar_t, char_traits<wchar_t> > wfstream;
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, 文件
, 对象
, iostream
, cout 输出流
, stream
, c++ cin
, c++ cin
, global
, iostream数据结构
, 输出c++数据文件
, 格式c++
, 输出流重载c++信息
The
整体把握、整体把握教材、整体把握圆锥曲线、纵观全文 整体把握、boost iostreams,以便于您获取更多的相关知识。