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

news2025/2/26 14:42:32

定义于头文件 <fstream>

template<

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

> class basic_fstream : public std::basic_iostream<CharT, Traits>

 类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_iostream 的高层接口赋予基于文件的缓冲( std::basic_filebuf )。

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

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

类型定义
fstreambasic_fstream<char>
wfstreambasic_fstream<wchar_t>


文件操作

检查流是否有关联文件

std::basic_fstream<CharT,Traits>::is_open

bool is_open();

(C++11 前)

bool is_open() const;

(C++11 起)

检查文件流是否有关联文件。

等效地调用 rdbuf()->is_open() 。

参数

(无)

返回值

若文件流有关联文件,则为 true ,否则为 false 。

调用示例

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

int main()
{
    std::fstream fstream1("test1.txt", std::ios::in | std::ios::out);
    std::fstream fstream2("test2.txt", std::ios::in | std::ios::out);
    std::fstream fstream3("test3.txt", std::ios::in | std::ios::out);

    std::cout << "fstream1 is: "
              << (fstream1.is_open() ? "true" : "false") << std::endl;
    std::cout << "fstream2 is: "
              << (fstream2.is_open() ? "true" : "false") << std::endl;
    std::cout << "fstream3 is: "
              << (fstream3.is_open() ? "true" : "false") << std::endl;

    std::cout << std::endl;
    return 0;
}

输出

 

打开文件,并将它与流关联

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

void open( const char *filename,
           ios_base::openmode mode = ios_base::in|ios_base::out );

(1)

void open( const std::filesystem::path::value_type *filename,
           ios_base::openmode mode = ios_base::in|ios_base::out );

(2)(C++17 起)

void open( const std::string &filename,                                  
           ios_base::openmode mode = ios_base::in|ios_base::out );

(3)(C++11 起)

void open( const std::filesystem::path &filename,                                  
           ios_base::openmode mode = ios_base::in|ios_base::out );

(4)(C++17 起)

将名为 filename 的文件打开并与文件流关联。

失败时调用 setstate(failbit) 。

成功时调用 clear() 。(C++11 起)

1-2) 等效地调用 rdbuf()->open(filename, mode). (该调用效果上的细节见 std::basic_filebuf::open )。仅若 std::filesystem::path::value_type 非 char 才提供重载 (2) 。 (C++17 起)

3-4) 等效地调用 (1-2) ,如同以 open(filename.c_str(), mode) 。

参数

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

返回值

(无)

 调用示例

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

int main()
{
    std::string strFileName1 = "test1.txt";
    std::fstream fstream1;
    //1-2) 等效地调用 rdbuf()->open(filename, mode ).
    fstream1.open(strFileName1.c_str(), std::ios::in | std::ios::out);

    std::fstream fstream2;
    std::string strFileName2 = "test2.txt";
    //3-4) 等效地调用 (1-2) ,如同以 open(filename.c_str(), mode) 。
    fstream2.open(strFileName2, std::ios::in | std::ios::out);

    std::fstream fstream3;
    std::string strFileName3 = "test3.txt";
    fstream2.open(strFileName3, std::ios::in | std::ios::out);

    std::cout << "fstream1 is: "
              << (fstream1.is_open() ? "true" : "false") << std::endl;
    std::cout << "fstream2 is: "
              << (fstream2.is_open() ? "true" : "false") << std::endl;
    std::cout << "fstream3 is: "
              << (fstream3.is_open() ? "true" : "false") << std::endl;

    std::cout << std::endl;
    return 0;
}

输出

 

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

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

相关文章

超快软恢复二极管的特点与应用,你必须看的好文章~

什么是超快软恢复二极管&#xff1f; 超快软恢复二极管&#xff08;Ultrafast Soft Recovery Diode&#xff09;是一种特殊的二极管&#xff0c;它具有较快的恢复速度和较低的反向恢复电荷。它通常用于高频开关电路和电源应用中&#xff0c;以提高效率和降低开关损耗。 超快软…

多人协同编辑文档:实现无限制的团队协作!

什么是多人协同编辑文档&#xff1f; 多人协同编辑文档是指两个或以上的用户同时对同一文件进行修改、编辑等操作。 多人协同编辑文档的优点 1、提高办公效率&#xff1a;多人协同编辑文档的出现&#xff0c;避免了传统的文件共享方式中的效率低以及文件版本不一致的问题。 …

Live Market搭建跨境产业数据库,业务触达全球消费者

具有海量数据基础和内容生成需求的跨境电商成为AI应用的核心场景之一&#xff0c;面对这项新兴技术&#xff0c;跨境卖家们积极入局&#xff0c;也随之带动B2B数字外贸持续火热。 AI技术的应用可以帮助它们更好地了解用户和市场需求&#xff0c;提高自身的运营效率和效果&…

了解Web DDoS海啸攻击的4个维度

我们都知道近年来网络攻击的数量和频率急剧上升&#xff0c;针对Web应用程序的DDoS海啸攻击就是其中增长非常迅速的一个种类。过去常见的HTTP/S洪水攻击正在大范围的转变为更难对付的Web DDoS海啸攻击&#xff0c;每个人都应该提前做好被攻击的准备并采取适当的保护措施。 哪些…

【Vue3 博物馆管理系统】定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页

系列文章目录 第一章 定制上中下&#xff08;顶部菜单、底部区域、中间主区域显示&#xff09;三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 [第三章 使用Vue3、Element-plus菜单组件构建轮播图] [第四章 使用Vue3、Element-plus菜单组件构建组图文章] 文章目…

Ubuntu18.04搭配无人机仿真环境(ROS,PX4,gazebo,Mavros,QGC安装教程)

Ubuntu18.04搭配无人机仿真环境 ROS环境配置版本安装 gazebo安装Mavrosa安装PX4源码下载和编译运行仿真地面站安装 ROS环境配置 我个人使用了代理环境进行下载。Linux没有代理的可以使用国内源。 清华大学源 sudo sh -c ‘. /etc/lsb-release && echo “deb http://m…

Direct path read LOB

Table full scan &#xff1a; wait event Direct path read because of LOB "Direct path read" Wait Event During LOB Access (Doc ID 2287482.1)​编辑To Bottom In this Document Symptoms Changes Cause Solution References APPLIES TO: Oracle Database …

《赏金猎人》华为对战平台,新手部署指南!

《赏金猎人》是一款休闲联机对战小游戏&#xff0c;目前已免费上架 Cocos Store 资源商城。 本文重点介绍&#xff0c;如何在该游戏中集成华为联机对战能力。 开发环境 Cocos Creator&#xff1a;Cocos Creator 3.7.2Android&#xff1a;Android Studio 3.6.1微信小游戏&#x…

DenseNet网络分析

文章目录 DenseNet结构Dense Layer & Dense BlockDense Layer的宽度Transition Layers 对比实验网络结构训练参数对比结果CIFAR-10&#xff0c;CIFAR-100&#xff0c;SVHN ImageNet数据集 进一步分析 从ResNet开始&#xff0c;有很多研究都是琢磨怎么通过提高深度网络中层与…

【C# 基础精讲】字典(Dictionary)的使用

在C#中&#xff0c;Dictionary<TKey, TValue>是一种非常常用的泛型集合类&#xff0c;用于存储键值对&#xff08;Key-Value Pair&#xff09;的数据结构。Dictionary<TKey, TValue>可以根据键快速查找对应的值&#xff0c;因此在需要快速查找和检索数据的场景下&a…

Lorenz系统最大lyapunov exponent的求解

首先看下Lorenz混沌系统: 赋予初始值,例如: 当然,初始值可以根据需要设定。 看下他的吸引子,很美: 看下他的分叉图:

【uniapp】使用Vs Code开发uniapp:

文章目录 一、使用命令行创建uniapp项目&#xff1a;二、安装插件与配置&#xff1a;三、编译和运行:四、修改pinia&#xff1a; 一、使用命令行创建uniapp项目&#xff1a; 二、安装插件与配置&#xff1a; 三、编译和运行: 该项目下的dist》dev》mp-weixin文件导入微信开发者…

SLAM框架与相关理论梳理

应该是思维导图的形式使用markmap实现,可以使用md文档在VSCode中添加插件预览,预览图如绑定的那个资源的样式。 效果大概是长这个样子 > 但是CSDN不好用,一堆乱码。这里建议从这个链接中复制下载md文件,使用VSCode的markmap插件查看,或者直接把md的内容复制到markmap网…

Java SPI机制详解-01

1. 概述 SPI&#xff08;Service Provider Interface&#xff09;&#xff0c;是 Java 6 引入了一个内置功能&#xff0c;实现服务提供发现和加载机制&#xff0c;使之与特定接口的匹配。 SPI 机制的核心思想就是 解耦 &#xff0c;将装配的控制权移到程序之外&#xff0c;这…

多模态图像融合的相关驱动双分支特征分解

文章目录 CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion摘要本文方法损失函数 实验结果 CDDFuse: Correlation-Driven Dual-Branch Feature Decomposition for Multi-Modality Image Fusion 摘要 多模态图像融合的目的是使…

GaussDB之SQL Audit,面向应用开发的SQL审核工具

前言 我们先从一个SQL语句说起&#xff08;以某传统单机数据库为例&#xff09;。 也许这就是我们业务代码中潜藏的一个SQL语句&#xff0c;对于一个普通开发者来说&#xff0c;这个语句编写工整&#xff0c;逻辑清晰&#xff0c;没有什么问题&#xff0c;可以直接推到代码仓中…

只需要一个技巧,医疗设备立马大变样!

当谈及医疗领域中的设备运行与维护&#xff0c;蓄电池的监控成为至关重要的一环。医疗设备的顺利运行直接关系到患者的生命安全和医疗工作的有效性。为此&#xff0c;对医疗设备所使用的蓄电池进行实时监控和管理显得尤为关键。 蓄电池监控不仅提高了医疗设备的可靠性&#xff…

7个位运算符(二进制运算)(左移右移运算符的使用)

位运算符运算符运算范例<<左移>>右移>>>无符号右移& 与运算 &#xff08;按位与&#xff09; & | 或运算 &#xff08;按位或&#xff09; ^ 异或运算 &#xff08;按位异或&#xff09; ~ 取反运算 &#xff08;按位取反&…

Apache-Maven

安装Maven 解压apache-maven到目录下 Maven目录如下 bin&#xff1a;目录中存放的是可执行文件&#xff0c;JAVA项目中的编译执行打包都要使用bin. conf:存放的是Maven的配置文件&#xff0c;本地配置、私服配置都需要在conf下的settings.xml进行配置。 lib下存放的是Maven所…

高精度、抗干扰强、低功耗:双频四模卫星定位导航GPS/北斗模块SKG123LD参考设计

北斗定位很好理解&#xff0c;就是通过测量出已知位置的卫星导北斗模块之间的距离&#xff0c;再综合多可卫星的数据计算出北斗模块所在位置的经纬度信息。北斗模块和GPS模块一样&#xff0c;北斗模块被称为用户部分&#xff0c;它像“收音机”捕获并跟踪卫星的信号&#xff0c…