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

news/2024/11/24 16:34:47/

定义于头文件 <fstream>

template<

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

> class basic_ofstream : public std::basic_ostream<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>::operator=

basic_ofstream& operator=( basic_ofstream&& other );

(C++11 起)

 移动赋值文件流 other*this ,等效地移动赋值 std::basic_ostream 基类和关联的 std::basic_filebuf 。

other 置为无关联文件。注意基类移动赋值交换 *this 与 other 间的所有流状态变量(除了 rdbuf )。

参数

other-要移动的文件流。

返回值

*this

调用示例

#include <fstream>
#include <utility>
#include <string>
#include <iostream>int main()
{std::ofstream ofstream1("test1.txt", std::ios::out);std::cout << "ofstream1 is: " << (ofstream1 ? "true" : "false") << std::endl;ofstream1 << "hello" << " ";std::cout << std::endl;//移动赋值文件流 other 给 *this ,等效地移动赋值 std::basic_ostream 基类和关联的 std::basic_filebuf 。std::ofstream ofstream2 = std::move(ofstream1);std::cout << "ofstream1 is: " << (ofstream1.is_open() ? "true" : "false") << std::endl;std::cout << "ofstream2 is: " << (ofstream2.is_open() ? "true" : "false") << std::endl;ofstream2 << "word" << "!";std::cout << std::endl;ofstream1.close();ofstream2.close();std::ifstream ifstream1("test1.txt", std::ios::in);std::cout << "ifstream1 is: " << (ifstream1.is_open() ? "true" : "false") << std::endl;if (ifstream1.is_open()){std::cout << ifstream1.rdbuf() << std::endl;}std::cout << std::endl;return 0;
}

交换二个文件流

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

void swap( basic_ofstream& other );

(C++11 起)

交换流与 other 的状态。

通过调用 basic_ostream<CharT, Traits>::swap(other) 和 rdbuf()->swap(other.rdbuf()) 进行。

参数

other-要交换状态的流

返回值

(无)

调用示例

#include <fstream>
#include <utility>
#include <string>
#include <iostream>int main()
{std::ofstream ofstream1("test1.txt", std::ios::out);std::cout << "ofstream1 is: " << (ofstream1 ? "true" : "false") << std::endl;std::ofstream ofstream2("test2.txt", std::ios::out);std::cout << "ofstream2 is: " << (ofstream2 ? "true" : "false") << std::endl;std::cout << std::endl;ofstream1 << "hello 1" << " ";ofstream2 << "hello 2" << " ";//交换流与 other 的状态。//通过调用 basic_ostream<CharT, Traits>::swap(other) 和 rdbuf()->swap(other.rdbuf()) 进行。std::cout << "ofstream1.swap(ofstream2) " << std::endl;ofstream1.swap(ofstream2);ofstream1 << "hello 1" << " ";ofstream2 << "hello 2" << " ";ofstream1.close();ofstream2.close();std::cout << std::endl;std::ifstream ifstream1("test1.txt", std::ios::in);std::cout << "ifstream1 is: " << (ifstream1.is_open() ? "true" : "false") << std::endl;if (ifstream1.is_open()){std::cout << ifstream1.rdbuf() << std::endl;}std::cout << std::endl;std::ifstream ifstream2("test2.txt", std::ios::in);std::cout << "ifstream2 is: " << (ifstream2.is_open() ? "true" : "false") << std::endl;if (ifstream2.is_open()){std::cout << ifstream2.rdbuf() << std::endl;}std::cout << std::endl;return 0;
}

输出

 

返回底层未处理的文件设备对象

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

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

(C++11 起)

返回指向底层未处理文件设备对象的指针。

参数

(无)

返回值

指向底层未处理文件设备对象的指针。


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

相关文章

Python爬虫遇到重定向问题解决办法汇总

在进行Python爬虫任务时&#xff0c;遇到重定向问题是常见的问题之一。重定向是指在发送请求时&#xff0c;服务器会返回一个新的URL&#xff0c;将请求重新定向到该URL。为了帮助您解决这个问题&#xff0c;本文将提供一些实用的解决办法&#xff0c;并给出相关的代码示例&…

缓存友好在实际编程中的重要性

引入 当CPU执行程序时&#xff0c;需要频繁地访问主存储器&#xff08;RAM&#xff09;中的数据和指令。然而&#xff0c;主存储器的访问速度相对较慢&#xff0c;与CPU的运算速度相比存在显著差异&#xff0c;每次都从主存中读取数据都会导致相对较长的等待时间&#xff0c;从…

Java实现十大经典排序算法之快速排序

0 算法简介 快速排序是一种高效率排序算法&#xff0c;它是对冒泡排序的一种改进&#xff0c;它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot&#xff08;一般选取数组首元素&#xff09;&#xff0c;使得数组排序之后基…

error C4430 缺少类型说明符 - 假定为 int。注意 C++ 不支持默认 int

出现原因&#xff1a;两个类头文件相互包含 使用声明类代替头文件包含

C#中控件的invoke方法

https://www.exyb.cn/news/show-280348.html 在用.NET Framework框架的WinForm构建GUI程序界面时&#xff0c;如果要在控件的事件响应函数中改变控件的状态&#xff0c;例如&#xff1a;某个按钮上的文本原先叫“打开”&#xff0c;单击之后按钮上的文本显示“关闭”&#xff0…

【数据可视化】(二)数据探索组件

目录 0.简介 一、数据模式与数据组织 1、数据的定义 2、数据库的定义 3、什么是数据模式? 4、数据模式举例 5、什么是数据纲要? 6、数据组织的层次 二、矢量数据 1、什么是矢量数据?

Mybatis 实体类属性名和表中字段名不一致怎么处理

一. 前言 最近耀哥有学生出去面试&#xff0c;被问到 “Mybatis实体类的属性名和表中的字段名不一致该怎么处理&#xff1f;”&#xff0c;这其实是一个很经典的面试题&#xff0c;接下来耀哥就为大家详细解析一下这道面试题。 二. 分析 2.1 实体类和字段名不一致所带来的后果…

【LeetCode】剑指 Offer Ⅱ 第2章:数组(8道题) -- Java Version

题库链接&#xff1a;https://leetcode.cn/problem-list/e8X3pBZi/ 题目解决方案剑指 Offer II 006. 排序数组中两个数字之和双指针&#xff08;异向&#xff09; ⭐剑指 Offer II 007. 数组中和为 0 的三个数排序 双指针&#xff08;异向&#xff09; ⭐剑指 Offer II 008. 和…