首页 > 编程语言 >c++中的文件操作

c++中的文件操作

时间:2024-07-21 13:29:22浏览次数:16  
标签:文件 读取 二进制 fstream ios c++ file 操作

前言

hello,大家好啊,这里是文宇,不是文字,是文宇哦。

C++中的文件操作是用于在程序中读取、写入和操作文件的一种重要功能。文件操作允许程序直接与外部文件进行交互,这对于数据的存储和读取非常有用。在C++中,文件操作主要通过iostream库中的fstream类来实现。fstream类提供了一种简单而灵活的方法来读写文本文件和二进制文件。下面将详细介绍C++中的文件操作。

打开文件

 在C++中,我们可以使用fstream类中的open()函数来打开文件。open()函数有两个参数,第一个参数为文件的路径,第二个参数为打开文件的模式。常用的打开模式有以下几种:

  • ios::in:读取文件。
  • ios::out:写入文件。
  • ios::app:在文件末尾追加写入。
  • ios::binary:二进制模式。

示例代码:

#include <fstream>
using namespace std;

int main() {
    fstream file;
    
    // 打开文件
    file.open("example.txt", ios::out);
    
    // 检查文件是否成功打开
    if (file.is_open()) {
        cout << "文件打开成功" << endl;
    } else {
        cout << "文件打开失败" << endl;
    }
    
    // 关闭文件
    file.close();
    
    return 0;
}

写入文件

 在C++中,我们可以使用fstream类的<<运算符将数据写入文件。将数据写入文件的过程是将数据从程序的内存写入到外部文件中。写入数据的基本步骤如下:

  • 打开文件。
  • 使用<<运算符将数据写入文件。
  • 关闭文件。

示例代码:

#include <fstream>
using namespace std;

int main() {
    fstream file;
    
    // 打开文件,以写入模式打开
    file.open("example.txt", ios::out);
    
    // 将数据写入文件
    file << "Hello, World!" << endl;
    
    // 关闭文件
    file.close();
    
    return 0;
}

读取文件

 在C++中,我们可以使用fstream类的>>运算符从文件中读取数据。将数据从文件中读取到程序的内存中。读取数据的基本步骤如下:

  • 打开文件。
  • 使用>>运算符从文件中读取数据。
  • 关闭文件。

示例代码:

#include <fstream>
#include <string>
using namespace std;

int main() {
    fstream file;
    string data;
    
    // 打开文件,以读取模式打开
    file.open("example.txt", ios::in);
    
    // 从文件中读取数据
    file >> data;
    
    // 输出读取到的数据
    cout << data << endl;
    
    // 关闭文件
    file.close();
    
    return 0;
}

逐行读取文件

 在C++中,我们可以使用fstream类的getline()函数逐行读取文件。getline()函数接受两个参数,第一个参数是一个字符串对象,用于存储读取到的行,第二个参数是一个字符,用于指定行结束的标志。

示例代码:

#include <fstream>
#include <string>
using namespace std;

int main() {
    fstream file;
    string line;
    
    // 打开文件,以读取模式打开
    file.open("example.txt", ios::in);
    
    // 逐行读取文件
    while (getline(file, line)) {
        cout << line << endl;
    }
    
    // 关闭文件
    file.close();
    
    return 0;
}

二进制文件操作 

除了读写文本文件外,C++还支持读写二进制文件。二进制文件是以二进制形式存储的文件,可以存储任意数据类型的数据。在C++中,使用二进制文件操作与文本文件操作类似,只是打开文件时需要指定二进制模式。

示例代码:

#include <fstream>
using namespace std;

struct Student {
    int id;
    string name;
    int age;
};

int main() {
    fstream file;
    Student student;
    
    // 打开文件,以二进制写入模式打开
    file.open("example.bin", ios::out | ios::binary);
    
    // 将数据写入二进制文件
    student.id = 1;
    student.name = "Tom";
    student.age = 20;
    
    file.write(reinterpret_cast<char*>(&student), sizeof(Student));
    
    // 关闭文件
    file.close();
    
    // 打开文件,以二进制读取模式打开
    file.open("example.bin", ios::in | ios::binary);
    
    // 从二进制文件中读取数据
    file.read(reinterpret_cast<char*>(&student), sizeof(Student));
    
    // 输出读取到的数据
    cout << "ID: " << student.id << endl;
    cout << "Name: " << student.name << endl;
    cout << "Age: " << student.age << endl;
    
    // 关闭文件
    file.close();
    
    return 0;
}

总结

 C++中的文件操作是一种强大的功能,可以实现与外部文件的交互。通过fstream类,我们可以打开、读取、写入和关闭文件。对于文本文件,我们可以使用<<和>>运算符进行读写操作;对于二进制文件,我们需要使用write()和read()函数进行读写操作。文件操作给我们提供了一种方便的方法来处理外部文件的数据,扩展了程序的功能和灵活性。

标签:文件,读取,二进制,fstream,ios,c++,file,操作
From: https://blog.csdn.net/2401_84159494/article/details/140572110

相关文章

  • Linux下C++静态链接库的生成以及使用
    目录一.前言二.生成静态链接库三.使用静态链接库一.前言这篇文章简单讨论一下Linux下如何使用gcc/g++生成和使用C++静态链接库(.a文件)。二.生成静态链接库先看下目录结构然后看下代码//demo.h#ifndefDEMO_H#defineDEMO_H#include<string>classDemo{p......
  • 对 Pyarmor 文件进行反混淆
    我有一个pythonpyarmor混淆文件,我想对其进行反混淆。pyarmor混淆文件包含以下内容我可以找到一种方法来取回包含在pyarmor中的源代码吗?frompyarmor_runtime_000000import__pyarmor____pyarmor__(__name__,__file__,b'PY000000/*....etc....)我尝试......
  • Mike11前处理—如何快速简便的提取断面文件Cross sections?——ZDM法
    前言:近期接触了一些关于MIKE11提取断面的技巧,当然很多人应该知道这种方法——ZDM软件提取(一款水工设计软件)。我们一般拿到都是CAD版本的断面文件,如果一个一个去输入的话,繁琐又耗时,还容易出错,今天我们在这里介绍一种简单的断面提取方法—ZDM法此方法适用很普遍,小编抽个时......
  • 在质量和文件大小之间进行折衷,如何将非常详细的图像保存到合理大小(<1MB)的文件中?
    我面临一个小(大)问题:我想生成高分辨率散斑图案并将其保存为可以导入激光雕刻机的文件。可以是PNG、JPEG、PDF、SVG或TIFF。我的脚本很好地生成了我想要的模式:用户需要首先定义输入,这些是:#############INPUTS#############dpi=1000#dotsperinchdpmm=0......
  • vscode注释插件koroFileHeader使用, vue 文件注释插件
    使用文档https://github.com/OBKoro1/koro1FileHeader/wiki/安装和快速上手git地址https://github.com/OBKoro1/koro1FileHeader安装测试搜索setting.json用户输入如下配置//头部注释"fileheader.customMade":{//Author字段是文件的创建者可以在specialO......
  • C++文件操作-文本文件-读文件
    第一种#include<iostream>//1、包含头文件fstream#include<fstream>usingnamespacestd;voidtest01(){ //2、创建流对象 ifstreamifs; //3、打开文件并且判断是否打开成功 ifs.open("test.txt",ios::in); if(!ifs.is_open()) { cout<<"文件打开失......
  • C++ 鼠标轨迹API【神诺科技SDK】
    一.鼠标轨迹模拟简介传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,使得神诺科技 能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。二.鼠标轨迹算法实现AI大模型通过学习大量的人类鼠标操......
  • C++鼠标轨迹API - 神诺科技SDK
    一.鼠标轨迹模拟简介传统的鼠标轨迹模拟依赖于简单的数学模型,如直线或曲线路径。然而,这种方法难以捕捉到人类操作的复杂性和多样性。AI大模型的出现,使得神诺科技 能够通过深度学习技术,学习并模拟更自然的鼠标移动行为。二.鼠标轨迹算法实现AI大模型通过学习大量的人类鼠标操......
  • MySQL数据库基本操作包括MySQL过程、MySQL声明
    MySQL数据库操纵数据库查看数据库showdatabases;创建数据库createdatabase<database_name>;删除数据库dropdatabase<database_name>;使用数据库usemysql操纵数据表查看数据表showtables;创建数据表CREATETABLETBL_USER(#创建user,tableU_IDINTPR......
  • C++之函数
    1概述作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。2函数的定义函数定义一般主要有5个步骤:返回值类型函数名参数列表函数体语句return表达式语法:返回值类型函数名(参数列表){函数体语句......