iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中文件操作基础详解
  • 568
分享到

C++中文件操作基础详解

2024-04-02 19:04:59 568人浏览 薄情痞子
摘要

目录文件操作文件分类文本文件写文件读文件二进制文件写文件读文件文件操作 意义:利用文件操作可以保存我们程序运行的信息,是持久化技术的体现 文件分类 按文件类型分为: 1、文本文件 &

文件操作

意义:利用文件操作可以保存我们程序运行的信息,是持久化技术的体现

文件分类

按文件类型分为:

1、文本文件    -  文件以文本的ASCII码形式存储在计算机中

2、二进制文件 - 文件以文本的二进制形式存储在计算机中

按类分为:     

  • ofstream类:写操作
  • ifstream类: 读操作
  • fstream类: 读写操作

文本文件

写文件

五个步骤:

1.引入头文件

#include <fstream>

2.创建流对象

ofstream 对象名;

3.打开文件

对象名.open(“文件路径”,打开方式);

4.写数据

对象名 << “待写入的数据”;

5.关闭文件

对象名.close();

文件打开方式:

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

注意: 文件打开方式可以利用 | 操作符配合使用

例如:用二进制方式写文件 ios::binary | ios:: out

代码示例

#include<iostream>
#include<fstream>
using namespace std;
//写文件操作
void test()
{
    ofstream file;
    file.open("myFirstFile.txt", ios::out);
    file << "姓名:叶落秋白" << endl;
    file << "年龄:繁华的18岁" << endl;
    file << "爱好:码字" << endl;
    file.close();
}
int main(void)
{
    test();
    return 0;
}

按照顺序,先引入头文件<fstream>,创建写文件类对象file,然后就是调用open函数设置打开方式为写文件并保存文件路径为myFirstFile.txt,这里直接写文本文件名称的话,该文件会自动生成到该项目路径下。接下来用左移运算符写入内容,这里文件也支持endl,可以自动换行,最后调用close函数关闭保存文件。

运行效果:

读文件

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

读文件步骤如下:

1.引入头文件

#include <fstream>

2.创建流对象

ifstream 对象名;

3.打开文件并判断文件是否打开成功

对象名.open(“文件路径”,打开方式);

4.读数据

四种方式读取

5.关闭文件

对象名.close();

代码示例

#include<iostream>
#include<fstream>
#include<string>
using namespace std;
//读文件
void readFile()
{
    ifstream file;
    file.open("myFirstFile.txt",ios::in);
    if (!file.is_open())
    {
        cout << "文件打开失败,请检查文件路径!"<<endl;
        return;
    }
    //1、
    char buffer[1024];
    while (file >> buffer)
    {
        cout << buffer << endl;
    }
    //2、
    char buffer[1024];
    while (file.getline(buffer,sizeof(buffer)))
    {
        cout << buffer << endl;
    }
    //3、
    string buffer;
    while (getline(file, buffer))
    {
        cout << buffer << endl;
    }
    //4、
    char c;
    while ((c = file.get()) != EOF) 
    {
        cout << c ;
    }
    file.close();
}
int main(void)
{
    readFile();
    return 0;
}

读文件和写文件相比多用了一个判断函数is_open,作用是成功打开指定的文件会返回True。所以我加了个判断语句,如果没有打开就提示然后return,结束读文件操作。

后面就是读文件的四种操作:

第一种操作是定义一个字符型的数组,利用右移运算符将file对象的文件内容加到该数组内,然后利用cout语句输出。

第二种是调用成员函数getline,第一个形参是字符型数组地址,第二个参数是数组长度,利用sizeof计算即可,然后输出数组内容。

第三种操作是利用字符串型,这时候要引入<string>头文件。然后利用全局的getline函数,第一个形参传入对象名,第二个形参传入字符串,然后打印字符串完成读文件操作。

第四种不常用也不推荐使用,利用单个字符来获取文件内容,并打印,效率很低。file的get函数可以得到文件内容,然后依次赋值给c。

最后读文件结束记得加上调用close函数关闭文件。

运行效果:

二进制文件

以二进制的方式对文件进行读写操作,打开方式要指定为 ios::binary

可以存储结构体,对象成员等数据

写文件

二进制方式写文件主要利用流对象来调用成员函数write

函数原型 :ostream& write(const char * buffer,int len);

参数解释:字符指针buffer指向内存中一段存储空间(常量指针)。len是读写的字节数

代码示例

#include <fstream>
#include <string>
using namespace std;
class Student
{
public:
    char m_Name[32];
    int m_Age;
};
//二进制文件  写文件
void test01()
{
    ofstream ofs;
    ofs.open("student.txt", ios::out | ios::binary);
    Student p = { "叶落秋白"  , 18 };
    //类型强转
    ofs.write((const char*)&p, sizeof(p));
    ofs.close();
}
 
int main(void)
{
    test01();
    return 0;
}

这里我准备存储学生类的对象数据,所以就简单的创建了一个学生类,里面含有年龄属性和名字属性。名字采用的是C语言的字符数组,最好不要用字符串,有时候会不兼容。类创建完毕后,引入头文件<fstream>,创建写文件类对象ofs,指定打开方式,利用"|"操作符配合使用打开方式。接下来创建对象并为成员属性赋值,然后就该通过调用write方法写文件内容了,但是write的原型函数需要传入的是字符型的常量指针,所以需要把对象p的地址强制转换为(const char*),字节数利用sizeof计算。写文件内容结束后要调用close函数关闭文件

运行效果:

tips: 二进制文件直接查看会出现乱码的情况,但是只要我们能通过读文件得到信息就没有问题

读文件

二进制方式读文件主要利用流对象调用成员函数read

函数原型:istream& read(char *buffer,int len);

参数解释:字符指针buffer指向内存中一段存储空间(指针)。len是读写的字节数

代码示例

#include <fstream>
#include<iostream>
#include <string>
using namespace std;
class Student
{
public:
    char m_Name[32];
    int m_Age;
};
void test02()
{
    //创建流对象和打开方式可以一步到位,(调用内部构造函数)
    ifstream ifs("student.txt", ios::in | ios::binary);
    if (!ifs.is_open())
    {
        cout << "文件打开失败" << endl;
    }
    Student p;
    //类型强转
    ifs.read((char*)&p, sizeof(p));
    ifs.close();
    cout << "学生姓名:" << p.m_Name << "\n学生年龄:" << p.m_Age << endl;
}
int main(void)
{
    test02();
    return 0;
}

二进制读文件和文本文件读文件步骤几乎一样,也有判断是否打开成功的is_open函数,最大的区别就是二进制读文件是调用的read函数。注意read函数原型的第一个形参是字符指针类型,所以需要把学生对象的地址强制转换一下。调用结束后就可以把文件的数据写给对象p的属性,接下来调用close函数关闭文件再利用cout打印属性即可。

运行效果:

到此这篇关于c++中文件操作基础详解的文章就介绍到这了,更多相关C++文件操作内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++中文件操作基础详解

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

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

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

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

下载Word文档
猜你喜欢
  • C++中文件操作基础详解
    目录文件操作文件分类文本文件写文件读文件二进制文件写文件读文件文件操作 意义:利用文件操作可以保存我们程序运行的信息,是持久化技术的体现 文件分类 按文件类型分为: 1、文本文件 &...
    99+
    2022-11-13
  • C语言超详细文件操作基础下篇
    目录一、文件的顺序读写1.格式化的输出函数(fprintf)2.格式化的输入函数(fscanf)3.二进制读写1.二进制输出函数(fwrite)2.二进制输入函数3.scanf,fs...
    99+
    2022-11-13
  • C语言超详细文件操作基础上篇
    目录一、为什么使用文件二、什么是文件1.什么是数据文件2.什么是程序文件3.文件名三、文件的打开和关闭1 文件指针:2.打开和关闭文件函数(1)打开文件函数:(2)关闭文件函数四、文...
    99+
    2022-11-13
  • C语言操作符基础知识图文详解
    目录1.算术操作符+ - * /%2.移位操作符>> (右移操作符) <<(左移操作符)左移操作符:<<右移操作符:>>3.位操作符3...
    99+
    2022-11-12
  • C语言基础文件操作方式超全详解建议收藏
    目录什么是文件文件名文件类型文件指针文件的打开与关闭打开方式文件的顺序读写关于fread的返回值对比一组函数文件随机读取文件结束判断perror()ferror()什么是文件 磁盘上...
    99+
    2022-11-12
  • C语言操作符基础知识详解
    目录一.单目操作符:二.关系操作符三.条件操作符四.逗号表达式五.逻辑操作符总结一.单目操作符: !:逻辑反操作符; -:负数操作符; +:整数操作符; &:取地址操作符; ...
    99+
    2022-11-12
  • python3基础:文件操作
    相对路径和绝对路径 相对路径:顾名思义就是相对于当前文件的路径。网页中一般表示路径使用这个方法。 绝对路径:绝对路径就是主页上的文件或目录在硬盘上真正的路径。 比如 c:/apache/cgi-bin 下的,那么 c:/apach...
    99+
    2023-01-31
    操作 文件 基础
  • GolangDefer基础操作详解
    目录defer的执行顺序defer与return谁先谁后函数的返回值初始化有名函数返回值遇见defer情况defer遇见panicdefer中包含panicdefer下的函数参数包含...
    99+
    2022-11-11
  • Python基础之文件操作及光标移动详解
    目录一、文件操作1、文件的概念2、代码打开文件的方式二、文件读写模式1、'r' 只读模式 read2、'w' 只写模式 write3、'a&#...
    99+
    2022-11-11
  • python文件基础之(文件操作)
        在之前学习了python的列表、元组、集合等知识,接下来将python的文件相关的知识做一总结和分析。一 open函数 在我们用word、excel、vim对文件操作时,肯定要先打开文件,同样在编程里面也是需要将文件打开,然后再对文...
    99+
    2023-01-31
    文件 操作 基础
  • Linux基础IO【文件理解与操作】
    ✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Great minds discuss ide...
    99+
    2023-08-18
    linux 服务器 运维 云原生 基础IO
  • AndroidSRT字幕文件基础操作讲解
    目录简介下载创建文件夹文件下载下载调用以及文件解析调用解析ZIP文件解析外部引用转换转换SRT字幕文件获取SRT文件list实体数据显示字幕显示简介 需要在视频播放时,同步显示字幕,...
    99+
    2023-01-16
    Android SRT字幕文件 Android SRT Android字幕文件
  • python基础之文件操作
    目录1、打开文件2、写入3、追加4、读文件5、文件拷贝6、tell()7、truncate(size)8、seek()1、打开文件 open()函数简介 : 打开文件使用open函数...
    99+
    2022-11-12
  • Python基础:文件的操作
    一、python可以在不导入任何模块的情况下对文件完成读、写、追加,替换(稍复杂)。二、打开文件:        1、f = open('text.txt')            这种方式打开,操作完后需要使用f.colse()关闭。  ...
    99+
    2023-01-31
    操作 文件 基础
  • python基础-文件操作(10)
    一、什么是文件 等等这些都叫做文件,各种格式的。但不仅仅限制于这些。   二、文件的作用 大家应该听说过一句话:“好记性不如烂笔头”。 不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试...
    99+
    2023-01-31
    操作 文件 基础
  • Python Pandas基础操作详解
    目录数据结构&Series:DataFrame的构建:索引操作:DataFrame基本操作:广播运算:索引增删改查:字符串元素处理:数据规整:总结数据结构&Serie...
    99+
    2022-11-12
  • 【MySQL基础】MySQL基本操作详解
    系列文章目录 第1篇:【MySQL基础】MySQL介绍及安装 第2篇:【MySQL基础】MySQL基本操作详解 文章目录 ✍1,数据库操作     🔍1.1,查看数据库     🔍1.2,创建数据库    ...
    99+
    2023-08-16
    mysql 数据库 服务器
  • Git基础学习之文件删除操作命令详解
    目录1、删除文件说明2、删除文件操作(1)仅删除暂存区的文件(2)完全删除文件3、本文用到的命令总结1、删除文件说明 在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态。 ...
    99+
    2022-11-13
    Git文件删除操作 Git文件删除
  • python文件操作的基础详细讲解(write、read、readlines、readline)
    目录前言1 文件操作1.1 文件打开与关闭1.1.1 打开文件1.1.2 关闭文件2 文件读写2.1 写数据(write)2.2 读数据(read)2.3 读数据(readlines...
    99+
    2022-11-10
  • Node.js基础入门之缓存区与文件操作详解
    目录缓存区1. 什么是缓存区?2. 创建指定长度的缓存区3. 通过数组创建缓存区4. 通过字符串创建缓存区5. 读写缓存区6. 复制缓存区文件操作1. 异步直接读取2. 同步直接读取...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作