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

目录
  • 文件操作
    • 文件分类
  • 文本文件
    • 写文件
    • 读文件
  • 二进制文件
    • 写文件
    • 读文件

文件操作

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

文件分类

按文件类型分为:

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++文件操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C++文件读写操作详解

    目录 一.读写文本文件 1.1 写文件 1.2读文件 二.读写二进制文件 2.1 写文件 2.2 读文件 一.读写文本文件 1.1 写文件 写文件步骤如下: 包含头文件 #include <fstream> 创建流对象 ofstream ofs; 打开文件 ofs.open("文件路径",打开方式); 写数据 ofs << "写入的数据"; 关闭文件 ofs.close(); 文件打开方式: 打开方式 解释 ios::in 为读文件而打开文件

  • C++文件的操作及小实验示例代码详解

    目录 写文件: 读文件: 实验介绍 代码部分: 查看文件操作: 对于文件,它是一个流对象,对文件的操作无非是读和写,我先来介绍一下写文件: 写文件: 写文件有五步: 1.包含头文件 #include"fstream" 2.创建流对象 ofstream ofs; 3.打开文件 ofs.open("文件路径",打开方式); 4.写数据 ofs<<"写入的数据"; 5.关闭文件 ofs.close(); 接下来再看看读文件: 读文件: 读文

  • C++文件流读写操作详解

    目录 1.打开文件 1.1 fstream类型 1.2 open()的函数原型 1.3 打开方式 1.4 打开文件的属性 1.5 示例代码 2.文本文件的读写 2.1 写文件示例 2.2 读文件示例 2.3 逐字符读取和逐行读取 2.4 统计文本行数及读取某一行内容 2.5 读取数据到数组当中 3.状态标志符的验证(Verification of state flags) 4.获得和设置流指针(get and put stream pointers) 5.二进制文件 6.缓存和同步(Buffer

  • 深入理解C++中的文件操作

    前言 我们在编写程序的时候,最密不可分的就是对文件进行相应的操作,我们可以从文件中读取数据,可以将数据保存到文件,可以-- 总而言之,言而总之,一言以蔽之,对文件的操作是非常重要的,下面我们就来介绍一下C++中是如何对文件进行操作的.C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打

  • 详解C++文件读写操作

    在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: 这里主要是讨论fstream的内容: #include <fstream> ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读区到内存中 fstream //读写操作,对打开的文件可进行读写操作 1.打开文件 在fstream类中,成员函数open()实现打开文件的操作,从而将数据流和文件

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

    目录 文件操作 文件分类 文本文件 写文件 读文件 二进制文件 写文件 读文件 文件操作 意义:利用文件操作可以保存我们程序运行的信息,是持久化技术的体现 文件分类 按文件类型分为: 1.文本文件    -  文件以文本的ASCII码形式存储在计算机中 2.二进制文件 - 文件以文本的二进制形式存储在计算机中 按类分为: ofstream类:写操作 ifstream类: 读操作 fstream类: 读写操作 文本文件 写文件 五个步骤: 1.引入头文件 #include <fstream> 2

  • Python+Selenium自动化环境搭建与操作基础详解

    目录 一.环境搭建 1.python安装 2.pycharm下载安装 3.selenium下载安装 4.浏览器驱动下载安装 二.Selenium简介 (1)SeleniumIDE (2)SeleniumRC (3)SeleniumWebDriver (4)SeleniumGrid 三.常用方法 1.浏览器操作 2.如何获取页面元素 3.查找定位页面元素的方法 4.操作方法 5.下拉框操作 6.WINDOS弹窗 7.iframe内嵌页面处理 8.上传文件 9.切换页面 10.截图 11.等待时间

  • Python 文件操作的详解及实例

    Python 文件操作的详解及实例 一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧明. 白首为功名,旧山松竹老,阻归程. 欲将心事付瑶琴. 知音少,弦断有谁听. f = open('小重山') #打开文件 data=f.read()#获取文件内容 f.close() #关闭文件 注意:if in the win,hello文件是utf8保存的,打

  • IOS 基本文件操作实例详解

    IOS 基本文件操作实例详解 在iOS的App沙盒中,Documents和Library/Preferences都会被备份到iCloud,因此只适合放置一些记录文件,例如plist.数据库文件.缓存一般放置到Library/Caches,tmp文件夹会被系统随机清除,不适宜防止数据. [图片缓存的清除] 在使用SDWebImage时,图片被大量的缓存,有时需要获取缓存的大小以及清除缓存. 要获取缓存大小,使用SDImageCache单例的getSize方法拿到byte为单位的缓存大小,注意计算时

  • Java中文件管理系统FastDFS详解

    什么是FastDFS 很多以文件为载体的在线服务,如相册网站.视频网站等,都需要对文件进行管理,包括文件的存储.同步.访问(文件上传.文件下载)等,同时肯定会伴随着大容量存储和负载均衡的问题. 在日常的一些项目中,比如做用户的KYC认证等,也需要存储文件.图片.视频等.此时可以选择使用OSS云服务,也可以自己构建相对专业的文件管理系统. FastDFS是一个开源的轻量级分布式文件系统,用于解决大数据量存储和负载均衡等问题,并需要通过专有API进行访问.满足大容量文件存储问题,并保证高性能和高扩展

  • C语言中炫酷的文件操作实例详解

    目录 什么是文件 程序文件 数据文件 (本文重点) 文件名 文件的打开和关闭 文件指针 文件函数 相对路径与绝对路径 输入输出流 二进制读写 fwirte fread 总结 什么是文件 磁盘上的文件是文件 但是在程序设计中,我们一般谈的文件有两种:程序文件和数据文件(从文件功能的角度来分类). 程序文件 包括源程序文件(例如.c文件)目标文件(windows环境后缀为.obj)可执行程序(windos环境后缀为exe). 数据文件 (本文重点) 文件的内容不一定是程序,而是程序运行时读写的数据,

  • Rust 中的文件操作示例详解

    目录 文件路径 文件创建和删除 目录创建和删除 文件创建和删除 文件读取和写入 文件打开 文件读取 文件写入 相关资料 文件路径 想要打开或者创建一个文件,首先要指定文件的路径. Rust 中的路径操作是跨平台的,std::path 模块提供的了两个用于描述路径的类型: PathBuf – 具有所有权并且可被修改,类似于 String. Path – 路径切片,类似于 str. 示例: use std::path::Path; use std::path::PathBuf; fn main()

  • Python复制文件操作实例详解

    本文实例讲述了Python复制文件操作用法.分享给大家供大家参考,具体如下: 这里用python实现了一个小型的自动发版本的工具.这个"自动发版本"有点虚, 只是简单地把debug 目录下的配置文件复制到指定目录,把Release下的生成文件复制到同一指定,过滤掉不需要的文件夹(.svn),然后再往这个指定目录添加几个特定的文件. 这个是我的第一个python小程序. 下面就来看其代码的实现. 首先插入必要的库: import os import os.path import shut

  • C语言 文件操作解析详解及实例代码

    C语言文件操作解析 在文件操作中除了打开操作以及读写操作,还有几种比较常见的操作.下面介绍一下这些操作中涉及到的函数. 一.移动位置指针的函数 rewind函数和fseek函数,这两个函数的原型是: void rewind(FILE *fp);     将位置指针移动到文件首 int fseek(FILE *fp,long int offset,int origin);   将位置指针移动到距离origin的offset字节数的位置 其中对于fseek函数中的参数,origin为起始点,offs

  • C#的File类实现文件操作实例详解

    C#对文件的操作相当方便,主要涉及到四个类:File.FileInfo.Directory.DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下: 本文举例详述了File类的用法.File中提供了许多的静态方法,使用这些静态方法我们可以方便的对文件进行读写查等基本操作. 具体用法说明及相关示例如下: 1.读文件: // 打开一个文件,将文件的内容读入一个字符串,然后关闭该文件. public static byte[] ReadAllBytes(str

随机推荐