c++11 标准模板(STL)(std::basic_ofstream)(二)

news2024/11/16 1:54:11

定义于头文件 <fstream>

template<

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

> class basic_ifstream : public std::basic_istream<CharT, Traits>

类模板 basic_ifstream 实现文件流上的高层输入操作。它将 std::basic_istream 的高层接口赋予基于文件的流缓冲( std::basic_filebuf )。

std::basic_ifstream 的典型实现仅保有一个非导出数据成员: std::basic_filebuf<CharT, Traits> 的实例。

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

类型定义
ofstreambasic_ofstream<char>
wofstreambasic_ofstream<wchar_t>

 

成员函数

构造文件流

std::basic_ofstream<CharT,Traits>::basic_ofstream

basic_ofstream();

(1)

explicit basic_ofstream( const char* filename,
                std::ios_base::openmode mode = ios_base::out );

(2)

explicit basic_ofstream( const std::filesystem::path::value_type* filename,
                std::ios_base::openmode mode = ios_base::out );

(3)(C++17 起)

explicit basic_ofstream( const std::string& filename,
                std::ios_base::openmode mode = ios_base::out );

(4)(C++11 起)

explicit basic_ofstream( const std::filesystem::path& filename,
                std::ios_base::openmode mode = ios_base::out );

(5)(C++17 起)

basic_ofstream( basic_ofstream&& other );

(6)(C++11 起)

basic_ofstream( const basic_ofstream& rhs) = delete;

(7)(C++11 起)

 构造新的文件流。

1) 默认构造函数:构造不关联到文件的流:默认构造 std::basic_filebuf 并构造拥有指向此默认构造的 std::basic_filebuf 成员的基类。

2-3) 首先,进行同默认构造函数的步骤,然后通过调用 rdbuf()->open(filename, mode | std::ios_base::out)(该调用效果上的细节见 std::basic_filebuf::open )关联流与文件。若 open() 调用返回空指针,则设置 setstate(failbit) 。仅若 std::filesystem::path::value_type 非 char 才提供重载 (3) 。 (C++17 起)

4-5) 同 basic_ofstream(filename.c_str(), mode) 。注意,尽管默认模式是 out ,效果等同于描述于 std::filebuf::open 的 out|trunc 的效果。

6) 移动构造函数:首先,从 other 移动构造基类(这不影响 rdbuf() 指针),然后移动构造 std::basic_filebuf 成员,再调用 this->set_rdbuf() 安装新的 basic_filebuf 为基类中的 rdbuf() 指针。

7) 复制构造函数被删除:此类不可复制。

参数

filename-要打开的文件名
mode-指定打开模式。它是位掩码类型,定义下列常量:
常量解释
app每次写入前寻位到流结尾
binary以二进制模式打开
in为读打开
out为写打开
trunc在打开时舍弃流的内容
ate打开后立即寻位到流结尾
other-用作源的另一文件流

调用示例

#include <fstream>
#include <utility>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    //1) 默认构造函数:构造不关联到文件的流
    std::ofstream ofstream1;
    std::cout << "ofstream1 is: " << (ofstream1.is_open() ? "true" : "false") << std::endl;

    //2-3) 首先,进行同默认构造函数的步骤,
    std::string strFileName2 = "test2.txt";
    std::ofstream ofstream2(strFileName2.c_str(), std::ios::out);
    std::cout << "ofstream2 is: " << (ofstream2.is_open() ? "true" : "false") << std::endl;

    //4-5) 同 basic_ofstream(filename.c_str(), mode) 。
    std::string strFileName3 = "test3.txt";
    std::ofstream ofstream3(strFileName3, std::ios::out);
    std::cout << "ofstream3 is: " << (ofstream3.is_open() ? "true" : "false") << std::endl;

    //6) 移动构造函数:首先,从 other 移动构造基类(这不影响 rdbuf() 指针)
    std::ofstream ofstream4(std::move(strFileName3));
    std::cout << "ofstream4 is: " << (ofstream4.is_open() ? "true" : "false") << std::endl;

    //7) 复制构造函数被删除:此类不可复制。
    return 0;
}

输出

 

析构 basic_ofstream 和关联的缓冲区,并关闭文件

basic_fstream默认生成的析构函数将通过调用basic_filebuf的析构,从而间接调用close方法。即,会在析构中自动关闭文件。

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

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

相关文章

windows环境下安装RabbitMQ

一、RabbitMq简介1.1消息队列中间件简介消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性[架构] 使用较多的消息队列有 ActiveMQ(安全)&#x…

Java并发编程之顺序一致性

如果程序是正确同步的&#xff0c;程序的执行将具有顺序一致性&#xff08;Sequentially Consistent&#xff09;——即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。 同步&#xff0c;即排队。 同一时刻&#xff0c;只能有一个线程和内存交互&#xff01;&a…

基于C#的窗体阴影效果方案 - 开源研究系列文章

最近在研究C#的Winform窗体的效果&#xff0c;上次介绍了窗体动画效果的博文( 基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章 )&#xff0c;这次将窗体阴影效果的方案进行一个介绍。 找了一下度娘&#xff0c;具体窗体阴影效果就两种方法&#xff1a;直接绘制和…

机器学习深度学习——池化层

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——卷积的多输入多输出通道 &#x1f4da;订阅专栏&#xff1a;机器学习&&深度学习 希望文章对你们…

powershell 自动补全

我在zsh中使用智能提示 zsh-autosuggestions已经习惯了&#xff0c;而在windows中的终端默认没有智能提示&#xff0c;很起来不舒服。那么有没有什么替代呢&#xff1f; 安装powershell-7.3 我的windows 10默认安装的是powershell-5.1.19&#xff0c;所以我们先来升级一下。 …

基于facenet+faiss开发构建人脸识别系统

facenet是一款非常经典的神经网络模型&#xff0c;它可以直接学习从人脸图像到欧几里德空间的映射(直接将人脸映射到欧几里得空间)。在欧几里德空间中&#xff0c;距离直接对应于人脸相似性的度量。一旦这个空间产生&#xff0c;使用标准技术&#xff0c;将FaceNet嵌入作为特征…

p元素使用伪元素::before实现小圆点,换行缩进

p元素使用伪元素实现小圆点&#xff0c;默认换行第二行会与小圆点平行&#xff0c;图2是想要的样式 小圆点代码 p::before{content: "";display: inline-block;width: 6px;height: 6px;border-radius: 50%;background-color: #D8D8D8;margin: 0 5px 2px 0; }换行缩…

如何使用动态代理ip来突破限制

在如今数字化时代&#xff0c;互联网已经成为人们获取信息、交流互动、进行商业活动的重要平台。然而&#xff0c;许多网站为了保护安全和用户体验&#xff0c;采取了各种访问限制和封禁措施&#xff0c;使得用户在大规模网站访问和数据采集中面临种种困惑。作为动态IP代理产品…

数据可视化:Matplotlib详解及实战

1 Matplotlib介绍 Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表。 Matplotlib提供了一个套面向绘图对象编程的API接口&#xff0c;能够很轻松地实现各种图像的绘制&#xff0c;并且它可以配合Python GUI工具&#xff08;…

汽车维修保养记录查询API:实现车辆健康状况一手掌握

在当今的数字化世界中&#xff0c;汽车维修保养记录的查询和管理变得前所未有地简单和便捷。通过API&#xff0c;我们可以轻松地获取车辆的维修和保养记录&#xff0c;从而实现对手中车辆健康状况的实时掌握。 API&#xff08;应用程序接口&#xff09;是进行数据交换和通信的标…

pytorch实战-图像分类(二)(模型训练及验证)(基于迁移学习(理解+代码))

目录 1.迁移学习概念 2.数据预处理 3.训练模型&#xff08;基于迁移学习&#xff09; 3.1选择网络&#xff0c;这里用resnet 3.2如果用GPU训练&#xff0c;需要加入以下代码 3.3卷积层冻结模块 3.4加载resnet152模 3.5解释initialize_model函数 3.6迁移学习网络搭建 3.…

基于 Flink Paimon 实现 Streaming Warehouse 数据一致性管理

摘要&#xff1a;本文整理自字节跳动基础架构工程师李明&#xff0c;在 Apache Paimon Meetup 的分享。本篇内容主要分为四个部分&#xff1a; 背景 方案设计 当前进展 未来规划 点击查看原文视频 & 演讲PPT 一、背景 ​ 早期的数仓生产体系主要以离线数仓为主&#xf…

【Leetcode】二叉树的最近公共祖先,二叉搜索树转换成排好序的双向链表,前序遍历与中序遍历构造二叉树

一.二叉树的最近公共祖先 链接 二叉树的最近公共祖先 题目再现 『Ⅰ』思路一&#xff1a;转换成相交链表问题 观察上图&#xff0c;节点1和节点4的最近公共祖先是3&#xff0c;这是不是很像相交链表的问题&#xff0c;关于相交链表&#xff0c;曾经我在另一篇文章里写到过&a…

WPS Office AI实战:智能表单,信息收集神器

前面我们已经介绍了WPS里常用的文字、表格、演示文稿等等&#xff0c;在WPS AI的武装下重新发挥出智能化的威力&#xff0c;今天来聊聊表单的智能化应用会是什么样。 金山智能表单进行数据轻松收集&#xff0c;通过对话或拍照创建表单&#xff0c;回收结果还能自动生成数据报告…

回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SO-CNN-BiGRU蛇群算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SO-CNN-BiGRU蛇群算法…

浅谈管廊智能监控和报警系统设计探究

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;综合地下管廊为我国城市的发展发挥了积极的推动作用&#xff0c;为了确保综合地下管廊基本功能得以真正的发挥出来&#xff0c;有必要将智能监控系统融入综合地下管廊智能管理系统构建中&#xff0c;以便于实…

windows物理机 上安装centos ,ubuntu,等多个操作系统的要点

一、摘要 一般情况下&#xff0c;我们的笔记本或工作电脑都默认安装windows 分几个区&#xff0c;当下是win7 win8 win 10 win11 等&#xff0c;突然我们有需求需要安装个centos &#xff0c;后面我们应当怎么做&#xff0c;要点是什么&#xff1f;一定要根据网上的贴子一步步来…

【雕爷学编程】MicroPython动手做(37)——驱动LCD与图文显示3

MixPY——让爱(AI)触手可及 MixPY布局 主控芯片&#xff1a;K210&#xff08;64位双核带硬件FPU和卷积加速器的 RISC-V CPU&#xff09; 显示屏&#xff1a;LCD_2.8寸 320*240分辨率&#xff0c;支持电阻触摸 摄像头&#xff1a;OV2640&#xff0c;200W像素 扬声器&#…

python绘制六边形风车,用python画简单的风车

本篇文章给大家谈谈用python画简单的风车&#xff0c;以及python绘制六边形风车&#xff0c;希望对各位有所帮助&#xff0c;不要忘了收藏本站喔。 风车的动画&#xff0c;过程如下&#xff1a;1&#xff09;绘制风车形状A&#xff0c;2&#xff09;擦除风车形状A&#xff0c;3…

【LinearAlgebra】Chapter 12 - Linear Algebra in Probability Statistics

文章目录 Chapter 12 - Linear Algebra in Probability & StatisticsVariance (around athe mean) 方差&#xff08;接近均值&#xff09;Continuous Probability Distributions 连续概率分布Mean and Variance of p ( x ) p(x) p(x) p ( x ) p(x) p(x) 的均值和方差Norm…