c++文件流

1.流的概念

在 C++ 中,流(stream)是一种用来处理输入输出数据的概念。

可以把流看作从源头(如文件、键盘、网络连接等)到终端的数据传输管道。

这些管道在程序运行时动态创建,并可以连接到多种不同的源头和终端,例如文件、控制台窗口、打印机、屏幕显示、内存等。

通过使用流,开发人员可以将输入和输出操作看作连续的字节序列,并使用统一的方式读取和写入数据。

在 C++ 中,有两类流:输入流和输出流。

输入流用于从外部源头中读取数据,输出流用于将数据输出到外部终端。

例如,一个程序可以从文件中读取数据,并将其写入到屏幕或者另一个文件中。

C++ 标准库提供了多种流类型,包括 `istream`、`ostream`、`ifstream`、`ofstream`、`stringstream` 等,

它们都提供了一系列成员函数来读取和写入数据,以及控制流的状态和行为。

在使用流时,需要注意不同类型的数据有不同的输入输出方式,

而且输入输出操作可能会发生错误,需要进行适当的错误处理。

另外,流也具有缓冲的特性,数据并不是实时流动的,而是先存储在缓冲区中,再按照一定的规则输出。

总的来说,流是 C++ 中非常重要的概念和工具,

它提供了一种易于操作和扩展的输入输出机制,使得程序可以方便地与外部环境交互。

// 文件读写
#include <iostream>
#include <fstream>
#include <string>using namespace std;int main()
{fstream obj;obj.open("test.txt", ios::out);obj.put('s');char ch = 'a';// 文件指针会定位当前写入的位置obj.put(ch);obj.close();obj.open("test.txt", ios::in);obj.get(ch);cout << ch << endl;ch = obj.get();cout << ch << endl;obj.close();obj.is_open();obj.eof();return 0;
}
// 二进制形式读写文件
// 二进制形式文件效率比较高,但是可读性不好
#include <iostream>
#include <string>
#include <fstream>using namespace std;int main()
{fstream obj;obj.open("test010.txt", ios::out);int num0 = 0xaabbccdd;int num1 = 0x12345678;obj.write((const char *)&num0, sizeof(2));obj.write((const char *)&num1, 2);obj.close();obj.open("test010.txt", ios::in);int val0 = 0;int val1 = 0;obj.read((char *)&val0, sizeof(int));obj.read((char *)&val1, sizeof(int));obj.close();cout << hex << "val0 = " << val0 << endl;// 输出的结果为5678,可以说明当前系统为小端模式// 在小端模式下,一个多字节数据的最低有效字节(LSB)存放在低地址位(地址值较小的位置)cout << hex << "val1 = " << val1 << endl;return 0;
}
// 使用重载的>> << 进行输入输出流操作
#include <iostream>
#include <string>
#include <fstream>using namespace std;int main()
{fstream obj;obj.open("test020.txt", ios::out);obj << "勇敢牛牛,不怕困难" << endl;obj << "123" << endl;obj.close();obj.open("test020.txt", ios::in);char str[64];int num;obj >> str;obj >> num;obj.close();cout << str << endl;cout << num << endl;return 0;
}

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

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

相关文章

目标检测算法综述

1 研究背景 1.1 概述 目标检测是计算机视觉的重要分支&#xff0c;主要任务是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别&#xff0c;即包含了目标定位与目标分类两部分。在计算机视觉领域中的目标跟踪、图像分割、事件检测、场景理解等的任务都以目标…

Java线程几种常用方法详细说明

在Java编程中&#xff0c;多线程编程是一个非常重要的主题。它允许我们同时运行多个任务&#xff0c;提高程序的性能和响应速度。在这篇博客中&#xff0c;我们将介绍一些常用的Java线程方法和构造器&#xff0c;并通过示例代码展示如何使用它们。 Thread提供的常用方法 publi…

速盾:速盾高防cdn的防御原理?

速盾高防CDN是一种专业的网络安全解决方案&#xff0c;通过多种防御措施保护网站不受各种网络攻击的影响。其防御原理主要包括以下几个方面&#xff1a; 高强度DDoS防护 速盾高防CDN采用了弹性云防护集群&#xff0c;能够应对大规模的分布式拒绝服务&#xff08;DDoS&#xff0…

SpringBoot与Spring Framework提供的缓存抽象

目录 缓存 项目总结 新建一个SpringBoot项目 pom.xml application.properties CacheConfig Book BookRepository接口 BookService服务类 BookController控制器 SpringbootCacheApplication启动类 启动项目&#xff0c;使用Postman测试 参考博文&#xff1a; 1、使用…

llvm 3.5 源码分析 clang for x86 001 之搭环境

0&#xff0c;目标 编译 针对x86 的&#xff0c;debug 的 c语言的编译器 1&#xff0c;下载代码 git clone --recursive 。。。llvm-project.git $ cd llvm-project 2&#xff0c;预备代码 llvm 3.5 版本的源代码&#xff0c;早期版本&#xff0c;可能比较小比较容易debug $…

Python知识点1---变量和数据类型

提前说一点&#xff1a;如果你是专注于Python开发&#xff0c;那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了&#xff0c;而如果你和作者一样只是操作其他技术的Python API那就足够了。 在所有知识开始前&#xff0c;先给大家介绍一下Python的注释&#xf…

使用STM32和TB6600驱动器控制42BYGH步进电机

项目概述 1. 系统组成 STM32微控制器&#xff1a;作为主控制器&#xff0c;负责发出控制指令。TB6600驱动器&#xff1a;用于接收STM32的指令并驱动步进电机。42BYGH步进电机&#xff1a;作为执行元件&#xff0c;根据控制信号进行转动。电源&#xff1a;为STM32、TB6600和步…

Unity MiniCPM-V 让引擎拥有视觉

Unity MiniCPM-V 让引擎拥有视觉 前言项目Python环境布置Unity场景布置代码编写添加并设置脚本总结 鸣谢AI提示 前言 新发布的MiniCPM-V&#xff0c;忍不住玩一下&#xff0c;可以让之前制作的语音助手拥有一定的视觉能力&#xff08;不是OpenCV不行&#xff0c;而是AI更加符合…

深入理解Java关系运算符,避免常见错误!

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Java Web是前端吗:深入解析Java Web技术的定位与边界

Java Web是前端吗&#xff1a;深入解析Java Web技术的定位与边界 在探讨Java Web是否属于前端领域时&#xff0c;我们首先需要明确Java Web技术的定位和它所涉及的范畴。本文将从四个方面、五个方面、六个方面和七个方面来深入解析这一问题&#xff0c;带您领略Java Web技术的…

复现CELL文章图片,在线绘制scRNA-seq多个cluster的差异火山图

导读 火山图表示两组间的差异&#xff0c;而在scRNA-seq中&#xff0c;同时会有多个cluster&#xff08;vs其他cluster&#xff09;的差异。如果用常规火山图展示&#xff0c;可能需要绘制十几个图。有没有更高效的展示方法呢&#xff1f;今天给大家带来CELL文章“A Spatiotem…

linux pigz 多线程压缩解压

压缩&#xff1a; tar --use-compress-programpigz -cvpf abc.tgz ./abc 解压&#xff1a; tar --use-compress-programpigz -xvf ./abc.tgz 解压到指定位置&#xff1a;tar --use-compress-programpigz -xvf ./abc.tgz -C ./hhh

原生js访问http获取数据的方法

在原生JavaScript中&#xff0c;直接通过浏览器端的JavaScript访问HTTP接口获取数据通常涉及XMLHttpRequest对象或现代的fetch API。 1. 使用XMLHttpRequest XMLHttpRequest是一个老旧的API&#xff0c;但在某些情况下仍然很有用。以下是一个简单的例子&#xff1a; javascr…

打造SimPO新算法,微调8B模型超越Claude 3 Opus

前言 大型语言模型&#xff08;LLM&#xff09;近年来取得了巨大进展&#xff0c;但要将其与人类价值观和意图相一致&#xff0c;使其变得有用、诚实和无害&#xff0c;仍然是一个挑战。强化学习从人类反馈中&#xff08;RLHF&#xff09;是一种常用的方法&#xff0c;通过微调…

Charles的安装和web端抓包配置

1.Charles的安装 通过官网下载&#xff1a;https://www.charlesproxy.com/download/&#xff0c;我之前下载的是4.6.2版本&#xff0c;下载成功后点击安装包&#xff0c;点击下一步下一步即可安装成功。 ​​ ​ 安装成功后打开charles页面如下所示。 ​ 2.乱码问题解决 打开…

【C++】STL:栈和队列模拟实现

&#x1f49e;&#x1f49e; 前言 hello hello~ &#xff0c;这里是大耳朵土土垚~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#x…

绘画参数配置及使用

绘画参数配置及使用 路径&#xff1a;站点后台-功能-AI绘画 进入参数配置 接口选择&#xff1a;多种接口自主选择&#xff08;需自己准备key&#xff09;&#xff0c;对应接口的key对话和绘画通用 存储空间&#xff1a; 位置在超管后台-存储空间 自主选择存储&#xff08;需…

【数据结构与算法】七大排序算法(下)

【数据结构与算法】七大排序算法(下) &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;数据结构与算法&#x1f345; &#x1f33c;文章目录&#x1f33c; 2.3 交换排序 2.3.1 冒泡排序 2.3.2 快速排序 2.3.3 快速排序(非递归) 2.4 归并…

fpga入门 串口定时1秒发送1字节

一、 程序说明 FPGA通过串口定时发送数据&#xff0c;每秒发送1字节&#xff0c;数据不断自增 参考小梅哥教程 二、 uart_tx.v timescale 1ns / 1psmodule uart_tx(input wire sclk,input wire rst_n,output reg uart_tx);parameter …

Spring bean加载顺序

最近在开发过程中遇到一个Spring bean加载顺序的问题&#xff0c;容器在启动的时候 会通过InitializingBean 的afterPropertiesSet 加载两级缓存&#xff0c;但是加载的过程中因为没有将load的容器对象加载到Spring 容器中导致NPE &#xff0c;所以今天来巩固一下spring bean的…