C++中的IO操作

article/2025/10/5 14:17:27

IO操作

  • 了解C++中的IO操作
    • C++中的二进制读写,文本读写
      • C++中的stringstream类与I/O操作中对<<与>>运算符的重载

了解C++中的IO操作

我们学习IO操作,就要先了解什么是IO操作,从名字中就可以看出来,I,O就代表着输入输出的操作,那么这个输入输出和cout和cin有什么区别呢?cout和cin是固定往终端(也就是屏幕输出的),在C++中还有一些接口可以将数据输入输出到其他的文件中,这些就是我们这次要学习的。

  1. ifstream
    ifstream是C++在读写操作中的一种类,ifstream表示的就是读操作的文件类。通过这个类可以创建一个对象,并且与某个文件进行绑定,接着进行操作,具体如下:
    在这里插入图片描述
    比如上面的这段就是我们定义一个ifs流对象,并且将这个对象与Test.cpp这个文件进行绑定,以后的哪些操作都是在Test.cpp中进行的。

  2. ofstream
    和上面的相对应,ifstream表示的是读操作的文件类,那么ofstream表示的就是写操作的文件类。具体操作和上面的读是一样的,也是通过创建一个流对象来将其与一个文件进行绑定具体如下:
    在这里插入图片描述
    这句就代表我们要向Test.txt这个文件中执行写操作

注意,上面这两个文件类都是需要调用头文件#include <fstream>的

C++中的二进制读写,文本读写

  1. 二进制I/O操作
    在C++中会给我们提供一个两个函数,分别是read函数和write函数,这两个函数是C++用来继续二进制读写文件的。先让我们了解一下这两个函数
    (1) read函数
    在这里插入图片描述
    这里可以看到我们通过与文件绑定的读流,将文件中的数据,读取到对应的char* pch中具体我们实现一个读操作的函数,如下图:
    在这里插入图片描述
    我们可以通过图看到,这个函数拥有两个参数,第一个参数就代表着要存储读到的数据的字符数组,第二个参数表示我们要读取数据的字节数。
    (2) write函数
    在这里插入图片描述
    和read函数一样,这个write函数也是拥有两个参数,但是不同的是,write函数是将字符数组中的数据写到一个与流绑定的文件中,也就是说,这里的第一个参数虽然也是一个字符串,但是他是一个常量字符串也就是用来传递要写的数据的,第二个参数没有发生变化,表示要发送数据的字节数。
    了解完这两个函数那么就让我们看一下二进制读写是怎么实现的呢?
    在这里插入图片描述
    首先我们可以通过图中看到,我们首先创建一个流对象,并将名字为_filename的文件与其进行绑定,之后使用read函数将文件中的数据读取到一个结构体对象info中,注意read中的第一个参数是char类型的,所以我们要将结构体类型转换成char类型,后面为该要接收数据的字节数,这样我们通过read函数就将数据从文件中读取出来了放到了结构体中。
    在这里插入图片描述
    和读数据很像,写数据这里我们刚开始也是定义一个流对象并将名字为_filename的文件与其进行绑定,之后调用他的write函数,具体操作就是将info中的数据写到文件中,也就完成了二进制的写操作。

  2. 文本读写
    上面我们了解了二进制读写,那么这个文本读写又是什么东西呢??
    文本读写就是为了解决我们看不懂二进制中写操作写出来的内容的,如下图:
    在这里插入图片描述
    这里我们通过二进制写往文件中写了一个数据,之后我们打开文件后观察到,这个文件中的数据我们无法看懂,这时就展示出文本读写的要出了,那么我们开始了解文本读写。
    其实文本读写和二进制读写本质上是没有什么差别的,因为文本读写我们使用的也是read函数和write函数,上面我们有说到这两个函数,这里就不具体介绍了。那么在文本读写中我们是如何使用这两个函数的呢??具体如下图:
    在这里插入图片描述
    此函数就是用来实现文本写的,和二进制写一样,首先我们先创建一个流对象,并将其和文件进行绑定,绑定之后我们先将结构体中的_ip数据写到文件中,和二进制写不一样的是这里我们写数据中的第二个参数用的是我们写到的字符数组的长度,而不是字节数了,之后我们通过put函数向文本中输入一个换行,由于之前我们在结构体中定义的_port成员变量是整形的,所以这里我们要使用to_string函数将其转换成字符串的形式,再使用write函数将该数据写到文本中,这里注意write函数的第一个参数要char类型的,所以这里我们还要使用C++中的c_str函数将string类型转换成c语言可以识别的char类型,这样我们就完成了向文本中进行文本写的操作,得到的结果如下:
    在这里插入图片描述
    这时我们就可以看到我们认识的数据了。
    上面我们讲完了文件写,那么这里我们再将文件读也说明一下,当我们了解完文件写之后,文件读的本质也就显而易见了,同上,先上代码:
    在这里插入图片描述
    这里可以看到,我们也是先创建一个流对象,将其与文件进行绑定,因为文本读,所以这里我们就要使用获取一行字符串的函数了,那么这个就是getline函数,为什么使用这个函数呢,因为这个函数可以忽视空格的存在,也就是说即便你的字符串中有空格我依然可以完整的读取成功。由上图得,我们首先读取结构体中得_ip部分,200表示读取数据的长度,因为这里我们只能通过字符数组来读取数据,所以这里我们定义一个缓冲区buffer来接收字符数据,之后再将这个字符数据通过stoi函数转换成int类型的数据并将其赋给_port成员变量,这样我们就实现了文本读操作,结果如下图:
    在这里插入图片描述
    这里通过监视窗口就可以看到了我们已经将文本中的数据读出来了并将其放到了结构体中。

C++中的stringstream类与I/O操作中对<<与>>运算符的重载

上面我们解决了二进制读写和文本读写的问题,这时我们注意到,我们可以将自定义类型中的数据写到文本中以字符串的方式显示出来,那么我们可不可以不通过文件这个中介,而是直接将自定义类型中的数据转换成字符串并输出出来呢,当然也是可以的,这里就要使用strngstream类了,这个类就可以将字符串轻松的转换成我们想要的自定义类型,这里给个例子:
在这里插入图片描述
这里就是首先我们定义一个stringstream类对象,直接使用该类中的str函数将我们想要的字符串放到这个对象中,之后定义一个我们自定义类的对象,通过>>操作符就可以将字符串按其自定义类中成员变量的位置放进去了。那么怎么讲自定义类型中的数据直接转换成字符串类型呢,这里也需要使用stringstream类,如下:
在这里插入图片描述
上图我们也是定义一个stringstream类的对象s,之后将我们自定义类中的成员变量数据发送给s,然后通过缓冲区buffer将s对象中的数据传到缓冲区中,之后进行输出,这就是将stringstream的具体作用了,当然不要忘了stringstream的头文件是#include <sstream>。
你以为到这里就结束了吗,当然不是。

我们看上面是否都注意到了一点不同,为什么对象s后面可以使用 << 和 >>来进行操作呢?
这里我们就要知道一个知识点了,在C++的I/O操作中,会对这些I/O类进行一个相同的操作,那就是对输入输出运算符进行重载,也就是说我们可以直接通过输入输出的运算符来像文本中执行写操作,或者读操作,具体操作如下:
在这里插入图片描述
上面就是使用对<<运算符,执行文本写操作,这里我们可以将<<看成一个流,将箭头所指的方向看成数据流向的方向,这样我们就可以明白这一句的意思是将结构体info中的数据像文件_filename中写入,读数据也是相同的,如下:
在这里插入图片描述
这就是将文件中的数据,通过流流向了结构体中的数据,也就是读操作,将文本中的数据读到结构体中。

上面就是I/O操作的具体内容了,感谢阅读


http://chatgpt.dhexx.cn/article/NJGBR0ck.shtml

相关文章

处理器的IO操作

文章目录 1 IO空间的分类1.1 内存映射IO空间1.2 独立IO空间 2 处理器操作外设的基本方式3 内存映射IO空间的硬件设计3.1 硬件设计的关键3.2 设备地址映射示例 1 IO空间的分类 处理器与外设之间的数据通信通过IO操作完成。 1.1 内存映射IO空间 对于内存映射IO空间&#xff1a…

文件IO操作

目录 一.文件的操作 1.构造方法 2.常用方法 3.文件的绝对路径和相对路径 1.绝对路径 2.相对路径 4.注意事项 5.File类的方法使用例子&#xff08;递归遍历指定目录下的所有文件&#xff09; 二. 输入流 1.InputStream&#xff08;输入流&#xff09; &#xff08;1&a…

Linux 文件IO操作

概述 本片文章将会主要介绍四个IO函数&#xff1a;开关读写 open函数 open 函数的输入参数是 open(char* ,flag ,[mode])第一个参数表示的是打开文件的路径文件名第二个参数表示的是打开的方式&#xff0c;见下表 打开方式描述O_RDONLY只读O_WRONLY只写O_RDWR读写O_CREAT创建…

简述IO操作

IO java.io中最主要的五个类就是InputStream、OutputStream、Reader、Writer、File。 从传输方式角度来说&#xff0c;可以将IO分类为&#xff1a; 一&#xff1a;File File类的对象主要用来获取文件本身的一些信息&#xff0c;例如文件所在的目录、文件的长度或文件读写权…

Java文件IO操作及案例

文章目录 一. 文件概述1. 狭义和广义上的文件2. 文件的分类3. 文件的路径 二. 针对文件系统的操作1. File类的属性和构造2. File类的获取操作3. File类的判断操作4. 文件的创建和删除5. 其他的常用方法 三. 对文件内容进行读写1. IO流对象2. 文件的读操作3. 文件的写操作4. Sca…

java IO操作

系列文章目录 第一章 万事万物皆对象 第二章 java构造器 第三章 java访问权限 第四章 java初始化 第五章 java继承 第六章 java重载与重写 第七章 java接口和抽象类 第八章 java数组 第九章 java内部类 第十章 java时间操作 第十一章 final关键字 第十二章 java字符串 第十三章…

Linux基础 IO操作

一、IO接口的基本认识与使用 在c语言中&#xff0c;我们对文件用fopen&#xff0c;fread&#xff0c;fwrite&#xff0c;fclose等等c语言标准库函数来进行操作&#xff0c;实际上这些库函数是对系统调用接口的一个封装&#xff0c;目的是操作简单&#xff0c;方便编程。 以下…

Java中的IO操作

IO 操作是我以前不太理解的操作。总是觉得很神奇&#xff0c;然后一脸懵逼。今天终于鼓起勇气&#xff0c;认真的学习IO方面的知识。有理解不妥当或者不正确的地方&#xff0c;还请各位大佬指正。 一、java的io发生在哪&#xff1f; 这个问题&#xff0c;我们必须首先明确下。…

基础IO-文件IO操作

目录 1.C语言文件IO相关操作&#xff08;库函数IO接口&#xff09; 2. 系统调用IO接口 1.C语言文件IO相关操作&#xff08;库函数IO接口&#xff09; fopen--打开文件&#xff0c;返回一个文件的操作句柄&#xff0c;有了句柄才能对指定的文件进行操作。 FILE *fopen(char *p…

Java文件IO操作

目录 一、了解什么是文件 狭义的文件&#xff1a; 广义的文件&#xff1a; 二、文件的路径 ①文件的绝对路径 ②文件的相对路径 三、Java对于文件的操作 File类的构造方法 File类的普通方法 四、对于文件的内容操作 ①FileInputStream&#xff08;文件输入流&#xf…

IO操作

一、简介 IO流是用来处理设备之间的数据传输的&#xff0c;数据一般储存在设备上 设备&#xff1a;硬盘&#xff0c;光盘&#xff0c;内存等等&#xff0c;内存是临时储存的 Java对数据的操作是采用流的方式 按照操作的数据分为&#xff1a;字节流和字符流 暗照流向&#x…

Java基础--IO操作

一、IO原理及分类 一、IO原理 1、I/O是Input/Output的缩写&#xff0c;I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输&#xff0c;如读写文件&#xff0c;网络通信等。 2、java程序中对于数据的输入/输出操作一般都是以流的方式进行 3、java.io包下提供各…

关于I/O操作

https://blog.csdn.net/deram_boy/article/details/51191425 提及这个&#xff0c;就想到了各种文件操作&#xff0c;这种流&#xff0c;什么reader 啊&#xff0c; writer啊&#xff0c;buffer啊&#xff0c;file啊。但是综合的东西与总结&#xff0c;只是曾经了解。因为工作…

IO操作概念

IO&#xff1a;输入输出&#xff0c;对程序的输入与输出 文件&#xff1a;一组有关数据的集合 文件名&#xff1a;这组数据的名字 linux系统中所有文件均属于文件&#xff08;通过文件系统进行管理&#xff09; 按类型分类&#xff1a; 1、普通文件 &#xff08;…

I/O操作

前言 I/O操作即操作存储器&#xff0c;所以想了解I/O操作&#xff0c;需要了解一点存储器相关知识点。 计算机存储器 存储器是计算机的核心部件之一&#xff0c;在完全理想的状态下&#xff0c;存储器应该要同时具备以下三种特性&#xff1a; &#xff08;1&#xff09;速度…

操作系统_04_IO相关(个人总结)

声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章 2. 由于是个人总结, 所以用最精简的话语来写文章 3. 若有错误不当之处, 请指出 软硬链接 软链接(快捷方式): 删除原文件时, 软链接则失效 硬链接…

gcc 命令

gcc 命令 GCC 编译器 gcc 命令格式 gcc 选项 文件名字主要选项 -c&#xff1a; 只编译不链接为可执行文件&#xff0c;编译器将输入的.c 文件编译为.o 的目标文件。-o&#xff1a; <输出文件名>用来指定编译结束以后的输出文件名&#xff0c;如果不使用这个选项的话 G…

Ubuntu Linux gcc的常用命令

目录 一、gcc简介 二、简单的gcc编译 1 预处理 2 编译为汇编语言代码 3 汇编 4 连接 三、多个程序文件的编译 四、检查错误 五、连接库文件 1 编译成可执行文件 2 链接 3 强制链接时使用静态链接库 六、总结 一、gcc简介 Linux系统下的Gcc&#xff08;GNU C Compi…

Linux GCC 编译详解

文章目录 一、GCC 编译器简介二、GCC 工作流编程语言的发展GCC 工作流程gcc 和 g 的区别 三、使用 GCC 编译GCC 编译格式GCC 编译流程多个源文件编译 一、GCC 编译器简介 首先&#xff0c;什么是编译器呢&#xff1f; 我们可以使用编辑器&#xff08;如 linux 下的 vi、window…

gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项

C程序编编译的过程分为如下四个阶段 1.预处理&#xff1a;头文件展开&#xff08;#include&#xff09;、宏替换&#xff08;#define&#xff09;、条件编译&#xff08;#ifdef&#xff09;(.i)使用预处理器&#xff08;预处理阶段处理的都是以#开头的代码&#xff09; 2.编译…