iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >【C++】C++核心编程(十一)文件操作
  • 951
分享到

【C++】C++核心编程(十一)文件操作

c++开发语言ios 2023-09-14 20:09:52 951人浏览 八月长安
摘要

文件操作   程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化。   c++中对文件进行操作需要包含头文件   文件类型分为两种:     1、文本文件—文件以

文件操作

  程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化。
  c++中对文件进行操作需要包含头文件
  文件类型分为两种:
    1、文本文件—文件以文本的ASCII码形式存储在计算机中;
    2、二进制文件—文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们。
  操作文件的三大类:
    1.ofstream—写文件;
    2.ifstream—读文件;
    3.fstream—读写文件。

1. 文本文件

1.1 写文件

写文件步骤如下:
  1.包含头文件—#include
  2.创建流对象—ofstream ofs
  3.打开文件—ofs.open("文件路径",打开方式)
  4.写数据—ofs << "写入的数据"
  5.关闭文件—ofs.close()

文件的打开方式:

语句含义
iOS::in为读文件而打开文件
ios::out为写文件而打开文件
ios::ate初始位置:文件尾
ios::app追加方式写文件
ios::trunc如果文件存在先删除,再创建
ios::binary二进制方式

注意:文件打开方式可以配合使用,利用|操作符。例如:用二进制方式写文件ios::binary | ios::out

  • 代码演示
#include using namespace std;#include void test(){//1、创建头文件//2、创建流对象ofstream ofs;//3、打开文件ofs.open("test.txt",ios::out);//4、写数据ofs << "写文件的五大步骤:" << endl;ofs << "1、创建头文件" << endl;ofs << "2、创建流对象" << endl;ofs << "3、打开操作文件" << endl;ofs << "4、向文件中写入数据" << endl;ofs << "5、将文件关闭" << endl;//5、关闭文件ofs.close();}int main() {test();system("pause");return 0;}

open()为操作文件三大类的成员函数,用来打开文件,有文件路径、打开方式两个参数。

  • 输出结果
    在这里插入图片描述

总结
  1.文件操作必须要包含头文件#include
  2.写文件可以利用ofstream 或者 fstream
  3.打开文件时需要指定操作文件的路径,以及打开方式ofs.open("文件路径",打开方式)
  4.利用<<可以向文件中写数据
  5.操作完毕要关闭文件

1.2 读文件

  读文件与写文件步骤相似,但是读取文件的方式相对于比较多

读文件步骤如下:
  1.包含头文件—#include
  2.创建流对象—ifstream ifs
  3.打开文件—ifs.open("文件路径",打开方式)
  4.读数据—四种读取方式
  5.关闭文件—ifs.close()

  • 代码演示

读取方式一

#include using namespace std;#include #include void test(){//1、包含头文件//2、创建流对象ifstream ifs;//3、打开文件并判断文件是否成功打开ifs.open("test.txt",ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据char buf[1024] = { 0 };while (ifs >> buf){cout << buf << endl;}//5、关闭文件ifs.close();}int main() {test();system("pause");return 0;}

  is_open()是操作文件三大类的成员函数,用来判断文件是否已经打开,不需要参数。
  读取数据方式一是创建一个长度为1024、元素全为0的字符数组,用ifs >> buf将数据一行一行的写入buf数组中,每写入一行就输出一行,直到文件的数据被读取完。

char buf[1024] = { 0 };while (ifs >> buf){cout << buf << endl;}

读取方式二
  getline()是类ifstream的内置函数,用来将文件中的数据一行一行读取,读取后的内容存放在_str中,有char *_strstreamsize_count(数组大小)两个参数。
  读取数据方式二是创建一个长度为1024、元素全为0的字符数组,用ifs. getline()一行一行地读取数据然后将读取的数据存放在buf数组中,每存放一行就输出一行,直到文件的数据被读取完。

char buf[1024] = { 0 };while (ifs.getline(buf,sizeof(buf))){cout << buf << endl;}

读取方式三
  getline()是一个不依赖于对象的全局函数,用来将类ifstream对象中的数据一行一行读取,读取后的内容存放在_strstring变量中,有ifstream &_ifststring &_str两个参数。
  读取数据方式三是创建一个string变量,用getline()一行一行地读取文件对象ifs中的数据然后将读取的数据存放在字符串变量buf中,每存放一行就输出一行,直到文件的数据被读取完。

string buf;while (getline(ifs,buf)){cout << buf << endl;}

读取方式四
  ifs.get()是类ifstream的成员函数,用来一个字符一个字符的读取文件中的数据,读取后的内容存放在cchar变量中,没有参数。
  读取数据方式四是创建一个char变量,用ifs.get()一个字符一个字符地读取文件对象ifs中的数据然后将读取的数据存放在字符变量c中,每存放一个字符就输出一个字符,直到文件的数据被读取完(即(c = ifs.get()) != EOF)。读取的效率最低

char c;while ((c = ifs.get()) != EOF) //EOF == end of file{cout << c;}
  • 输出结果
写文件的五大步骤:1、创建头文件2、创建流对象3、打开操作文件4、向文件中写入数据5、将文件关闭请按任意键继续. . .

总结:
  1.读文件可以利用ofstream 或者 fstream
  2.利用is_open()成员函数可以判断文件是否打开成功
  3.四种读取方式,读取方式四的效率是最低的,不推荐使用

2. 二进制文件

2.1 写文件

  以二进制的方式对文件进行写操作,打开方式要指定为ios::binary
  二进制方式写文件主要是利用流对象调用成员函数write()。函数原型:ofs.write(const char *_str,streamsize_count(字节数));参数解释: 字符指针_str指向内存中一段存储空间,streamsize_count是读写的字节数。

  • 代码演示
#include using namespace std;#include class Person{public:char m_Name[64]; //如果创建string变量来保存字符串可能会出现一些问题,因此在这里使用char数组来保存字符串。int m_Age;};void test(){//1、创建头文件//2、创建流对象ofstream ofs;//3、打开文件ofs.open("Person.txt",ios::out | ios::binary);//4、写文件Person p = {"张三",18};ofs.write((const char*)&p,sizeof(p));//5、关闭文件ofs.close();}int main() {test();system("pause");return 0;}
  • 输出结果
    在这里插入图片描述

  (const char*)&p是把Person类型的数据强行转换为const char*这个数据类型。输出的结果中出现乱码的情况是因为写的二进制文件本身就是会这样,只要我们能够正确的把数据读取出来就没有问题。

2.2 读文件

  二进制方式读文件主要是利用流对象调用成员函数read()。函数原型:ifs.read(char *_str,streamsize_count(字节数));参数解释: 字符指针_str指向内存中一段存储空间,streamsize_count是读写的字节数。

  • 代码演示
#include using namespace std;#include class Person{public:char m_Name[64];int m_Age;};void test(){//1、添加头文件//2、创建对象流ifstream ifs;//3、打开文件并判断文件是否打开成功ifs.open("Person.txt",ios::in | ios::binary);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据Person p;ifs.read((char *) & p, sizeof(p));cout << "姓名:" << p.m_Name << "年龄:" << p.m_Age << endl;//5、关闭文件ifs.close();}int main() {test();system("pause");return 0;}
  • 输出结果
姓名:张三年龄:18请按任意键继续. . .

  (char*)&p是把Person类型的数据强行转换为char*这个数据类型。可以看到结果能够正常输出,所以之前写二进制文件是没有问题的。

来源地址:https://blog.csdn.net/qq_43723025/article/details/129898195

--结束END--

本文标题: 【C++】C++核心编程(十一)文件操作

本文链接: https://www.lsjlt.com/news/407806.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【C++】C++核心编程(十一)文件操作
    文件操作   程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化。   C++中对文件进行操作需要包含头文件   文件类型分为两种:     1、文本文件—文件以...
    99+
    2023-09-14
    c++ 开发语言 ios
  • c++核心编程之函数的重载
    目录1.函数重载概述2.函数重载的注意事项1.函数重载概述 ​作用​:函数可以相同,提高复用性 ​函数重载必须满足的条件​: 1​.同一个作用域下​2.​函数名称相同​3.函数​参...
    99+
    2024-04-02
  • 文件目录操作——Linux命令核心
    目录 相对路径和绝对路径  查看和切换工作目录 pwd 显示当前工作目录的绝对路径 cd 切换目录 列出目录内容 ls 列出目录的内容 创建和删除目录文件夹 mkdir创建一个新目录 rmdir 删除一个空的目录 touch 创建空文件 ...
    99+
    2023-09-11
    linux 运维 服务器
  • C语言文件操作详情(一)
    目录前言:一、文件是什么二、文件类型三、文件缓冲区四、文件指针五、文件的打开和关闭前言: 文件操作重要吗? 当然重要:如果我们想让自己的程序拥有记忆功能,那就需要把要记忆的信息和数据...
    99+
    2024-04-02
  • C++核心编程之类和对象详解
    目录1.封装1.1封装的意义封装意义一:封装意义二1.2 struct 和 class 区别1.3 成员属性设置为私有总结C++面向对象三大特性:封装、继承、多态 1.封装 1.1封...
    99+
    2024-04-02
  • C++核心编程之内存分区详解
    目录1、内存分区模型:2、代码区:3、全局区:4、小结:5、代码演示:6、运行结果:总结1、内存分区模型: C++程序在执行时,将内存大方向划分成4个区域 (1)代码区:存放安徽念书...
    99+
    2024-04-02
  • C语言编程核心要点是什么
    这篇文章主要讲解了“C语言编程核心要点是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言编程核心要点是什么”吧!C精简的语法集和标准库,让我们可以把精力集中到设计等真正重要的事情上来...
    99+
    2023-06-16
  • 掌控文件操作:探索操作系统的核心功能
    文件操作是操作系统最核心的功能之一,通过与文件交互,我们可以存储、检索、修改和删除数据。掌握文件操作技术至关重要,因为它使我们能够有效地管理信息并执行广泛的应用程序任务。 文件结构 文件是一种存储在一组连续字节中的数据容器。文件由以下部分...
    99+
    2024-02-29
    文件操作、操作系统、核心功能
  • C#实用教程操作xml文件
    操作XML文件是C#编程中非常常见的任务之一。下面是一个简单的C#实用教程,演示如何使用C#读取、编辑和保存XML文件。读取XML文...
    99+
    2023-09-15
    C#
  • 通过C#程序操作Config文件
    对于config文件,一般情况下都是使用ConfigurationManager加载,然后通过读取相应节点的值来获取想要的数据,但是,有时候需要修改config文件的值,这时候就用到...
    99+
    2024-04-02
  • 一文搞懂C语言中的文件操作
    目录一、文件操作1、 为什要使用文件操作2、什么是文件3、文件操作的使用一、文件操作 1、 为什要使用文件操作 在c语言中我们完成一个程序后,他并不会对我们的数据进行保存,就像我上一...
    99+
    2022-11-21
    C语言文件操作 C语言 文件
  • 文件操作的奥秘:揭开操作系统的核心机制
    文件系统的结构 文件系统是操作系统管理和组织文件和目录的逻辑结构。它将物理存储设备(如硬盘或固态硬盘)抽象为一个层次结构,其中包含以下主要元素: 文件:数据的集合,具有唯一的名称和内容。 目录:文件和子目录的集合,按层次组织。 ino...
    99+
    2024-02-29
    文件操作 文件系统 文件读写 系统性能 数据管理
  • C/C++文件的操作函数介绍
    这篇文章主要介绍“C/C++文件的操作函数介绍”,在日常操作中,相信很多人在C/C++文件的操作函数介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C/C++文件的操作函数介绍”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • C++核心编程之占位参数和默认参数
    目录1,默认参数2,函数占位参数1,默认参数 在c++中,函数的形参列表中的形参是可以有默认值的。 语法: 返回值类型 函数名 (参数 = 默认值)注意事项:1从左到右设置默认参数。...
    99+
    2024-04-02
  • C#中怎么操作文本文件
    这篇文章给大家介绍C#中怎么操作文本文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#操作文本文件演练实例浅析 using System;  using Syste...
    99+
    2023-06-17
  • 一文带你学透SQL语言的核心之DML操作
    目录1.添加数据2.修改数据3.删除数据4.查询数据5.注意事项6.总结我们已经基本学会了写SQL来操作数据库,但在命令行中写SQL时,往往有体验感差,效率低等问题,今天开始我们就学习一下在mysql的图形化客户端Nav...
    99+
    2023-06-08
    MySQL语句DML操作 MySQL DML操作 MySQL DML
  • 如何通过C#程序操作Config文件
    本文小编为大家详细介绍“如何通过C#程序操作Config文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何通过C#程序操作Config文件”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。对于config文件,...
    99+
    2023-06-29
  • java核心编程之文件过滤类FileFilter和FilenameFilter
    本文实例为大家分享了文件过滤类FileFilter和FilenameFilter,供大家参考,具体内容如下FileFilterpackage test;import java.io.File;import java.io.FileFilte...
    99+
    2023-05-31
    java 文件过滤类 filefilter
  • C语言文件操作详解
    目录一、什么是文件二、文件缓冲区三、文件指针四、文件的打开和关闭。总结一、什么是文件 在程序设计中,我们一般谈的文件有两种:程序文件、数据文件。 程序文件: 包括源程序文件(后缀为....
    99+
    2024-04-02
  • C#中怎么操作INI文件
    今天就跟大家聊聊有关C#中怎么操作INI文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#对INI文件操作对INI文件进行写操作,是通过组件button2的"Click...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作