![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++标准IO专题
文章平均质量分 84
此专栏分享c++标准库输入输出相关知识
cpp加油站
公众号:cpp加油站,专注分享linux下cpp知识
展开
-
探究一下c++标准IO的底层实现
说明一下,我用的是g++7.1.0编译器,标准库源代码也是这个版本的。本篇文章讲解c++标准IO的底层实现结构,以及cin和cout的具体实现。在看本文之前,建议先看一下之前的一篇文章,至少要知道标准IO里面各个类之间的关系:c++标准输入输出流关系梳理1. 标准IO的底层结构通过通读c++标准IO的源代码,我总结出了它的底层实现结构,如图:它分为三层结构:外部设备、缓冲区、程序,说明如下:外部设备是指键盘、屏幕、文件等物理或者逻辑设备;缓冲区是指在数据没有同步到外部设备之前,存放数.原创 2021-05-10 09:49:45 · 485 阅读 · 1 评论 -
c++标准库流状态一览
1. 流状态说明c++标准库对于流定义了一套它自己的状态变化规则,在ios_base.h声明的ios_base类中,它定义了一个枚举类型_Ios_Iostate来表示流状态,主要有以下四种:状态说明badbit在输入输出时遇到了系统级错误,会置为badbiteofbit读取文件时读到了文件末尾,就会置为eofbitfailbit往流缓冲区写入或者读取数据发生错误时,会被置为failbitgoodbit上面三种都没有时,就是goodbit另外ios_ba原创 2021-05-06 10:54:23 · 1489 阅读 · 4 评论 -
c++中endl操作符以及它的兄弟们
说明一下,我用的是g++7.1.0编译器,标准库源代码也是这个版本的。一直以来,我们每次使用cout输出数据的时候,如果要换行,都知道使用形如cout << endl;这样的形式,那么endl到底是什么呢,它是怎么样实现输出一个换行符的功能的,以前我没有思考过,但现在我想弄懂它,下面就一起看一下吧。1.endl操作符的实现在标准库头文件<ostream>中,我找到了endl的操作符重载函数,如下:template<typename _CharT, typename .原创 2021-04-30 09:31:11 · 2874 阅读 · 0 评论 -
c++中ifstream及ofstream超详细说明
前文说过,ifstream是继承于istream,ofstream是继承于ostream,fstream是继承于iostream类,而他们使用的缓冲区类是filebuf。关于这些类之间的关系,有兴趣可以去查看我之前的文章:c++标准输入输出流关系梳理1. filebuf类介绍filebuf类又比stringbuf类要复杂一点,毕竟是对文件进行读写,首先在它的成员变量中找到了这样一条声明:__file_type _M_file;_M_file就是它里面的文件操作对象,那么探究一下__file原创 2021-04-28 09:28:34 · 2500 阅读 · 0 评论 -
c++中istringstream及ostringstream超详细说明
文章目录1. stringbuf类介绍1.1 stringbuf类构造函数1.2 str函数2. istringstream类2.1 rdbuf函数2.2 swap函数3.ostringstream类和stringstream类前文说过,istringstream是继承于istream,ostringstream是继承于ostream,而他们使用的缓冲区类是stringbuf。关于这些类之间的关系,有兴趣可以去查看我之前的文章:c++标准输入输出流关系梳理1. stringbuf类介绍string原创 2021-04-26 10:01:17 · 2258 阅读 · 2 评论 -
c++中ostream类的超详细说明
<p>根据前文,ostream类是c++标准输出流的一个基类,本篇详细介绍ostream类的主要成员函数用法。</p><h5 id="1ostream的构造函数">1.ostream的构造函数</h原创 2021-04-19 10:32:04 · 10452 阅读 · 2 评论 -
c++中istream类的超详细说明
根据前文,istream类是c++标准输入流的一个基类,本篇详细介绍istream类的主要成员函数用法。1.istream的构造函数从istream头文件中截取一部分关于构造函数的声明和定义,如下:public:explicit basic_istream(__streambuf_type* __sb) : _M_gcount(streamsize(0)) { this->init(__sb); }protected: basic_istrea原创 2021-04-16 09:33:50 · 14472 阅读 · 2 评论 -
c++标准输入输出流关系梳理
输入输出是每一种编程语言必不可少的部分,c++也不例外,下面我们就来说明c++的标准输入输出的前世今生。1.首先说一下iostream和iostream.h的区别#include<iostream> // 这个就是1998年标准化以后的标准头文件,使用时需要使用声明命名空间std#include<iostream.h> // 这个就是标准化以前的头文件,里面的函数以及类都是全局的iostream是现在C++中规定的标准,目的在于使C++代码用于移植和原创 2021-04-13 09:52:31 · 322 阅读 · 0 评论