c++11 标准模板(STL)(std::basic_filebuf)(四)

定义于头文件 <fstream>

template<

    class CharT,
    class Traits = std::char_traits<CharT>

> class basic_filebuf : public std::basic_streambuf<CharT, Traits>

std::basic_filebuf 是关联字符序列为文件的 std::basic_streambuf 。输入序列和输出序列都关联到同一文件,并为两种操作维护连接文件位置。

函数 underflow() 和 overflow()/sync() 进行文件和缓冲区的获取放置区之间的实际 I/O 。 CharT 不是 char 时,多数实现在文件存储多字节字符,并用 std::codecvt 平面进行宽/多字节字符转换。

亦为常用字符类型定义二个特化:

类型定义
filebufbasic_filebuf<char>
wfilebufbasic_filebuf<wchar_t>

 

公开成员函数

打开文件并配置它为关联字符序列

std::basic_filebuf<CharT,Traits>::open

std::basic_filebuf<CharT, Traits>* open( const char* s,
                                         std::ios_base::openmode mode )

(1)

std::basic_filebuf<CharT, Traits>* open( const std::string& str,
                                         std::ios_base::openmode mode )

(2)(C++11 起)

std::basic_filebuf<CharT, Traits>* open( const std::filesystem::path& p,
                                         std::ios_base::openmode mode )

(3)(C++17 起)

std::basic_filebuf<CharT, Traits>* open( const std::filesystem::path::value_type* s,
                                         std::ios_base::openmode mode )

(4)(C++17 起)

打开拥有给定名称( s 、 p.c_str() (C++17 起) 或 str.c_str() ,取决于重载)的文件。

仅若 std::filesystem::path::value_type 非 char 才提供重载 (4) 。

(C++17 起)

如同通过以按下列方式确定的第二参数 (mode) 调用 std::fopen 打开文件:

modeopenmode & ~ate若文件已存在的动作若文件不存在的动作
"r"in从头读取打开失败
"w"out, out|trunc销毁内容创建新文件
"a"app, out|app后附到文件创建新文件
"r+"out|in从头读取错误
"w+"out|in|trunc销毁内容创建新文件
"a+"out|in|app, in|app写入到结尾创建新文件
"rb"binary|in从头读取打开失败
"wb"binary|out, binary|out|trunc销毁内容创建新文件
"ab"binary|app, binary|out|app写入结尾创建新文件
"r+b"binary|out|in从头读取错误
"w+b"binary|out|in|trunc销毁内容创建新文件
"a+b"binary|out|in|app, binary|in|app写入到结尾创建新文件

openmode 不是列出的模式之一,则 open() 失败。

若打开操作成功且 openmode & std::ios_base::ate != 0 (设置了 ate 位),则重寻位文件位置到文件尾,如同用调用 std::fseek(file, 0, SEEK_END) ,其中 file 是调用 fopen 返回的指针。若寻位失败,则调用 close() 并返回空指针以指示失败。

若关联文件已打开,则立即返回空指针。

参数

s, str, p-要打开的文件名; s 必须指向空终止字符串
openmode-文件打开模式, std::ios_base 模式的二进制或

返回值

成功时为 this ,失败时为空指针。

注意

常由 std::basic_fstream 的构造函数或 open() 成员函数调用 open()

 

冲入放置区缓冲区并关闭关联的文件

std::basic_filebuf<CharT,Traits>::close

std::basic_filebuf<CharT, Traits>* close();

若放置区存在(即为写入打开文件),则首先调用 overflow(Traits::eof()) 写入所有未决输出到文件,包含任何反迁移序列。

若在 underflow() 、 overflow() 、 seekpos() 和 seekoff() 之中最近调用的函数是 overflow() ,则可能多次调用 std::codecvt::unshift() 以确定按照感染的本地环境的反迁移序列,并将该序列以 overflow(Traits::eof()) 写入文件。

然后,如同用 std::fclose() 关闭文件,不考虑任何之前调用成功或失败。

若作出的任何函数调用,包含对 std::fclose() 的调用失败,则返回空指针。若作出的任何函数调用抛出异常,则捕捉该异常并在调用 std::fclose() 后重抛。若该文件已关闭,则立即返回空指针。

任何情况下,都更新 is_open() 所访问的私有成员变量。

参数

(无)

返回值

成功时为 this ,失败时为空指针。

注意

close() 典型地通过 std::basic_filebuf 的析构函数调用(继而典型地为 std::basic_fstream 的析构函数所调用)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RDIFramework.NET CS敏捷开发框架 V6.0发布(支持.NET6+、Framework双引擎,全网唯一)

全新RDIFramework.NET V6.0 CS敏捷开发框架发布&#xff0c;全网唯一支持.NET6&#xff0c;Framework双引擎&#xff0c;降低开发成本&#xff0c;提高产品质量&#xff0c;提升用户体验与开发团队稳定性&#xff0c;做软件就选RDIFramework.NET开发框架。 1、RDIFramework.NET…

《网络是怎样连接的》(二.1)

(83条消息) 《网络是怎样连接的》&#xff08;一&#xff09;_qq_38480311的博客-CSDN博客 本文主要取材于 《网络是怎样连接的》 第二章。 目录 &#xff08;1&#xff09;创建套接字 &#xff08;2&#xff09;连接服务器 &#xff08;3&#xff09;收发数据 &#xf…

jdk,jre和jvm三者的关系和区别

目录 一、三者的关系 二、JDK的概念 三、JRE的概念 四、JVM的概念 五、三者区别 一、三者的关系 从图中可以清楚地看到&#xff0c;他们之间的关系是JDK包含JRE, JRE又包含JVM。 因此&#xff0c;JDK包含JRE和JVM。 JDK JRE Java 开发工具包 [Java,Javac,Javadoc,Javap…

【stm32L152】段码屏驱动注解、MX_LCD_Init()初始化失败的解决方法

文章目录 断码屏驱动补充MX_LCD_Init()驱动初始化失败 断码屏驱动补充 已经有大神写过较详细的教程&#xff1a;https://blog.csdn.net/CSDN_Gao_16/article/details/115463499&#xff0c;但这篇博文仍然比较抽象&#xff0c;我看了好多遍才看明白-_-||&#xff0c;为了节省和…

WPF实战学习笔记19-备忘录添加功能

文章目录 备忘录添加功能memoviewmodel.csmemo.view修改控制器 备忘录添加功能 由于todoview 和 memoview的相似度很高&#xff0c;可复制todoview 的代码。 memoviewmodel.cs using Mytodo.Common.Models; using Mytodo.Service; using Prism.Commands; using Prism.Ioc; u…

Redis如何实现原子性自增自减

一、背景 假设有一个需求&#xff0c;包含简单的两个步骤&#xff1a; 第一步是用户获取验证码&#xff0c;检验验证码成功后跳转到表单填写页面&#xff1b;第二步是用户填写表单并提交申请。 为了防止用户跳过第一步直接提交申请&#xff0c;我们采取了以下策略&am…

9 君正音频采集的封装

概述 在IPC中,需要将设备端的声音采集后进行编码,然后发送给客户端或者监控平台。君正SDK中的音频功能包括5个模块,分别是:音频输入、音频输出、回声消除、音频编码和音频解码。其中,音频输入和音频输出存在设备(Device)和通道(Channel)的概念。一个MIC被认为是一个录…

【Java基础教程】(四十四)IO篇 · 上:解析Java文件操作——File类、字节流与字符流,分析字节输出流、字节输入流、字符输出流和字符输入流的区别

Java基础教程之IO操作 上 &#x1f539;本节学习目标1️⃣ 文件操作类&#xff1a;File2️⃣ 字节流与字符流2.1 字节输出流&#xff1a;OutputStream2.2 字节输入流&#xff1a;InputStream2.3 字符输出流&#xff1a;Writer2.4 字符输入流&#xff1a;Reader2.5 字节流与字符…

力扣27 26 283 844 977 移除数组

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的…

电脑新装系统优化,win10优化,win10美化

公司发了新的笔记本&#xff0c;分为几步做 1.系统优化,碍眼的关掉。防火墙关掉、页面美化 2.安装必备软件及驱动 3.数据迁移 4.开发环境配置 目录 目录复制 这里写目录标题 目录1.系统优化关掉底部菜单栏花里胡哨 2.安装必备软件及驱动新电脑安装360 1.系统优化 关掉底部菜单…

WPF MVVM之INotifyPropertyChanged接口的几种实现方式

序言 借助WPF/Sliverlight强大的数据绑定功能&#xff0c;可以比实现比MFC&#xff0c;WinForm更加优雅轻松的数据绑定。但是在使用WPF/Silverlight绑定时&#xff0c;有件事情是很苦恼的&#xff1a;当ViewModel对象放生改变&#xff0c;需要通知UI。我们可以让VM对象实现INot…

es通过rest接口_search、_delete_by_query查询与删除数据

1、rest接口查询数据 rest查询: http://localhost:9200/index_name/_search 查询表达式&#xff1a; {"query": {"wildcard": {"accountID": {"value": "v*"}}} }postman请求截图&#xff1a; 2、使用Rest接口删除数据 …

re学习(23)BUUCTF 刮开有奖(中间变量的获取)

INT_PTR __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4) {const char *v4; // esiconst char *v5; // ediint v7[2]; // [esp8h] [ebp-20030h] BYREF 虽然看名称不连续&#xff0c;但是通过看偏移地址&#xff0c;可知&#xff0c;这些变量在内存中是连续的&…

iOS--属性关键字

定义 chat&#xff1a; 在iOS开发中&#xff0c;属性关键字是用于声明类的属性&#xff08;实例变量&#xff09;的修饰符。属性关键字可以影响属性的访问权限、内存管理和生成相关的getter和setter方法。 属性关键字有哪些&#xff1f; 分类属性关键字原子性atomic、nonato…

Android ConstraintLayout使用攻略

原文链接 Android ConstraintLayout使用攻略 ConstraintLayout是新一代的布局&#xff0c;它汲取了众家之长&#xff0c;把布局的概念进行了大统一&#xff0c;灵活且强大&#xff0c;基本上可以干掉以前所有的常用布局&#xff08;LinearLayout, RelativeLayout和FrameLayout…

SD-WAN的ZTP功能是不用企业再配置了吗?

Zero-Touch Provisioning (全自动服务开通)是SD-WAN方案中最具代表性、也是最能打动客户的功能之一。 ZTP功能是完全不用企业用户进行配置了吗&#xff1f; 其实ZTP&#xff08;Zero Touch Provisioning&#xff09;并不是完全不需要配置&#xff0c;而是可以通过预定义的配置和…

【重点:单例模式】特殊类设计

请设计一个类&#xff0c;只能在堆上创建对象 方式如下&#xff1a; 将构造函数设置为私有&#xff0c;防止外部直接调用构造函数在栈上创建对象。向外部提供一个获取对象的static接口&#xff0c;该接口在堆上创建一个对象并返回。将拷贝构造函数设置为私有&#xff0c;并且…

vue中使用tesseract实现OCR/文字识别(识别图片中的文字)

文章目录 tesseract在线使用npm安装依赖&#xff1a;页面引入&#xff1a;js方法&#xff1a; tesseract离线使用克隆仓库拷贝 worker.min.js和tesseract-core.wasm.jsindex.html 引入tesseract.min.js下载语言包文件不上传文件服务器js方法优化 tesseract官网地址&#xff1a;…

webrtc QOS方法二.4(flexfec 实现可优化点)

一、冗余报文和媒体报文组织结构优化点 以单帧10个媒体报文&#xff0c;冗余度20%为例。这里webrtc输出要有10个媒体包2个冗余包。webrtc输出的报文序列如下&#xff1a; 代码实现如下&#xff1a; UlpfecGenerator::AddPacketAndGenerateFec&#xff1a;攒够足够的帧 Forwar…

【Kafka源码走读】Admin接口的客户端与服务端的连接流程

注&#xff1a;本文对应的kafka的源码的版本是trunk分支。写这篇文章的主要目的是当作自己阅读源码之后的笔记&#xff0c;写的有点凌乱&#xff0c;还望大佬们海涵&#xff0c;多谢&#xff01; 最近在写一个Web版的kafka客户端工具&#xff0c;然后查看Kafka官网&#xff0c;…