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

news/2024/10/21 5:46:46/

定义于头文件 <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>::close

void close();

关闭关联文件。

等效地调用 rdbuf()->close() 。若操作期间出现错误,则调用 setstate(failbit) 。

参数

(无)

返回值

(无)

注意

此函数为 basic_fstream 的析构函数在流对象离开作用域时调用,通常不直接调用。

调用示例

#include <fstream>
#include <utility>
#include <string>
#include <iostream>int main()
{std::fstream fstream1("test1.txt", std::ios::in);std::fstream fstream2("test2.txt", std::ios::in);std::fstream fstream3("test3.txt", std::ios::in);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;std::cout << "std::fstream close" << std::endl;fstream1.close();fstream2.close();fstream3.close();std::cout << std::endl;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::swap 算法

std::swap(std::basic_fstream)

template< class CharT, class Traits >
void swap( basic_fstream<CharT,Traits> &lhs, basic_fstream<CharT,Traits> &rhs );

 为 std::basic_fstream 特化 std::swap 算法。交换 lhsrhs 的状态。等效地调用 lhs.swap(rhs) 。

参数

lhs, rhs-要交换状态的流

返回值

(无)

异常

(无)

调用示例

#include <fstream>
#include <utility>
#include <string>
#include <iostream>int main()
{std::fstream fstream1("test1.txt", std::ios::out);std::cout << "fstream1 is: "<< (fstream1 ? "true" : "false") << std::endl;std::fstream fstream2("test2.txt", std::ios::out);std::cout << "fstream2 is: "<< (fstream2 ? "true" : "false") << std::endl;std::cout << std::endl;fstream1 << "hello 1" << " ";fstream2 << "hello 2" << " ";//为 std::basic_fstream 特化 std::swap 算法。//交换 lhs 与 rhs 的状态。等效地调用 lhs.swap(rhs) 。std::cout << "std::swap(fstream1, fstream2) " << std::endl;std::swap(fstream1, fstream2);fstream1 << "hello 1" << " ";fstream2 << "hello 2" << " ";fstream1.close();fstream2.close();std::cout << std::endl;std::fstream fstream3("test1.txt", std::ios::in);std::cout << "fstream3 is: "<< (fstream3.is_open() ? "true" : "false") << std::endl;if (fstream3.is_open()){std::cout << fstream3.rdbuf() << std::endl;}std::cout << std::endl;std::fstream fstream4("test2.txt", std::ios::in);std::cout << "fstream2 is: "<< (fstream4.is_open() ? "true" : "false") << std::endl;if (fstream4.is_open()){std::cout << fstream4.rdbuf() << std::endl;}std::cout << std::endl;return 0;
}

输出

 


http://www.ppmy.cn/news/1026237.html

相关文章

C语言的简单基础知识

C语言的基础知识包括变量、数据类型、运算符、控制流语句、函数等。下面会对每个部分进行详细解释&#xff0c;并给出相应的案例。 变量和数据类型&#xff1a; 变量&#xff1a;C语言中的变量用于存储数据&#xff0c;并且需要先声明后使用。声明变量时需要指定其数据类型。例…

1. 消息队列

消息队列 1.1. MQ 的相关概念 1.1.1. 什么是 MQ MQ(message queue)&#xff0c;从字面意思上看&#xff0c;本质是个队列&#xff0c;FIFO 先入先出&#xff0c;只不过队列中存放的内容是message 而已&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递消息。在…

x11 gtk qt gnome kde 之间的区别和联系

Linux 下的图形库介绍 一、Linux 图形领域的基础设施 1.1 X Window X Window从逻辑上分为三层&#xff1a;X Server、X Client和X协议。 最底层的X Server&#xff08;X服务器&#xff09;主要处理输入/输出信息并维护相关资源&#xff0c;它接受来自键盘、鼠标的操作并将…

计算图片的均值和方差用图片的归一化取值

计算图片的均值和方差用图片的归一化取值 注意&#xff1a;使用这种方法的前提是进行了数据批量化操作&#xff0c;需要使用神经网络库&#xff0c;torch&#xff0c;DataLoader def getStat(data):print(len(data))loader torch.utils.data.DataLoader(data, batch_size1, …

python3 request post请求中文例子

下面是一个使用Python 3发送POST请求并包含中文数据的示例&#xff1a; import requests# 请求URL url https://example.com/api# 请求头部设置 headers {Content-Type: application/json, }# 要发送的数据 data {message: 你好&#xff0c;世界&#xff01; }# 发送POST请…

C语言学习之一级指针一维数组

一级指针变量名的含义&#xff1a; int a 98; int *p &a;p:表示指针变量名&#xff0c;存放的是地址&#xff1b;*p:取指针变量指向的内存空间的数据&#xff1b;p1:向后偏移一个int类型大小的空间&#xff1b;*(p1):取p1指向的内存空间的数据&#xff1b;一维数组名的含…

R语言5_安装Giotto

环境Ubuntu22/20, R4.1. 已开启科学上网。 第一步&#xff0c;更新服务器环境&#xff0c;进入终端&#xff0c;键入如下命令&#xff0c; apt-get update apt install libcurl4-openssl-dev libssl-dev libxml2-dev libcairo2-dev libgtk-3-dev libhdf5-dev libmagick9-dev …

count(*) 和 count(1)和count(列名)区别

count(1) and count(*) 当表的数据量大些时&#xff0c;对表作分析之后&#xff0c;使用count(1)还要比使用count(*)用时多了&#xff01; 从执行计划来看&#xff0c;count(1)和count(*)的效果是一样的。 但是在表做过分析之后&#xff0c;count(1)会比count(*)的用时少些…