C++文件操作介绍

C++文件操作介绍

文件是指存储在计算机文件系统中的数据集合。文件可以包含各种类型的信息,例如文本、图像、音频视频等。在 C++中,文件是一种数据流,可以用于读取或写入数据。C++提供了一系列的文件操作函数,用于实现对文件的读取、写入、打开、关闭等操作。

在 C++中,文件可以分为文本文件和二进制文件。这两种文件的区别在于它们存储数据的方式:

文本文件:文本文件以字符形式存储数据,例如 ASCII 或 Unicode 字符。每个字符占用一个字节的空间。文本文件通常用于存储文本信息,如代码、配置文件、文档等。

二进制文件:二进制文件以字节形式存储数据,每个数据项可以是任意长度。二进制文件通常用于存储非文本信息,如图像、音频、视频等。

文本文件是包含可读字符的文件,例如.txt和.csv等文件通常是文本文件。图像、音频和视频等文件是二进制文件,因为它们包含嵌入在其中的二进制数据。图像文件通常包括.bmp、.jpg、.png等格式,音频文件通常包括.wav、.mp3等格式,视频文件通常包括.mp4、.mov等格式。

文件的路径可以使用字符串表示。文件路径可以是相对路径或绝对路径。

相对路径是相对于当前工作目录的路径。当前工作目录是执行程序时操作系统指定的默认路径。例如,如果当前工作目录是 D:\Test\John,而文件位于该目录下的子目录 Files 中,可以使用相对路径来表示文件路径:"Files/myfile.txt"。

绝对路径是文件的完整路径,包括驱动器名(在Windows系统中)或根目录符号(在类Unix系统中)。绝对路径从文件系统的根目录开始。例如,在Windows系统中,文件 myfile.txt 位于 D:\Test\John\Files,可以使用绝对路径来表示文件路径:" D:\Test\John\Files/myfile.txt"。

下面介绍常用的文件操作介绍。

C++文件操作步骤

☆ C方式的文件操作步骤

引入必要的头文件,C文件需要使用到<cstdio>(stdio.h)库,在程序开始前引入头文件#include <cstdio>或#include <stdio.h>

1.打开文件:通过使用fopen()函数创建文件指针来打开文件。

这个函数需要两个参数:文件名和打开模式。

2.读写文件内容:

使用fgetc()函数从文件中读取一个字符。使用fputc()函数向文件中写入一个字符。

使用fgets()函数从文件中读取一行字符串。使用fputs()函数将字符串写入文件。

3.关闭文件:使用fclose()函数关闭文件。

另外,需要注意文件操作过程可能会遇到一些异常情况,如文件打开失败、文件读写失败等等,需要进行相应的处理来保证程序的正确性和健壮性。

例如:

#include <stdio.h>

int main() {  
    // 打开文件  
    FILE *file = fopen("example.txt", "r");  
    if (file == NULL) {  
        printf("无法打开文件\n");  
        return 0;  
    }

    // 写入文件  
    fputs("Hello, World!", file);

    // 读取文件  
    char buffer[256];  
    fgets(buffer, 256, file);  
    printf("%s", buffer);

    // 关闭文件  
    fclose(file);

    return 0;  
}

☆ C++文件操作步骤

引入必要的头文件,在程序开始前引入头文件<iostream> 、<fstream>。

与C相比,C++提供了更多方便的方式来打开和操作文件。

1.打开文件:在打开文件方面的 C++提供了比C更丰富的方式。除兼容C方式外,<iostream>的open()函数来打开文件,这个函数需要两个参数:文件名和打开模式。这个函数需要两个参数:文件名和打开模式。还可以使用文件流类来打开文件,如std::ifstream file(); 

2.读写文件内容:

使用get()函数从文件中读取一个字符。使用put()函数向文件中写入一个字符。

使用getline()函数从文件中读取一行字符串。使用<<运算符或write()函数向文件中写入字符串。

3.关闭文件:使用close()函数关闭文件。

另外,需要注意文件操作过程可能会遇到一些异常情况,如文件打开失败、文件读写失败等等,需要进行相应的处理来保证程序的正确性和健壮性。

例如:

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

int main() {
    const char* filename = "example.txt"; // 文件名
    const char* mode = "w+"; // 打开文件的模式,这里是以读写方式打开

    // 创建并打开文件,检查是否成功打开
    ofstream out_file;
    out_file.open(filename, ios::out);
    if (!out_file.is_open()) {
        cerr << "文件打开失败" << endl;
        return -1;
    }

    // 写入文件
    const char* content = "Hello, World!";
    out_file << content;

    // 关闭文件
    out_file.close();

    // 打开文件,检查是否成功打开
    ifstream in_file;
    in_file.open(filename, ios::in);
    if (!in_file.is_open()) {
        cerr << "文件打开失败" << endl;
        return -1;
    }

    // 读取文件
    char buffer[1024];
    in_file.getline(buffer, sizeof(buffer));
    cout << buffer << endl;

    // 关闭文件
    in_file.close();

    return 0;
}

上面代码,改用文件流类来打开文件:

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

int main() {  
    // 打开文件  
    ofstream file("example.txt", ios::in);  
    if (!file.is_open()) {  
        cerr << "无法打开文件" << endl;  
        return 1;  
    }

    // 写入文件  
    file.write("Hello, World!", 50);
    
    // 关闭文件  
    file.close();

    // 重新打开文件
    ifstream readfile("example.txt");
    if (!readfile.is_open()) {
        cerr << "无法打开文件" << endl;
        return 1;
    }

    // 读取文件
    char buffer[256];  
    readfile.read(buffer, 256);  
    cout << buffer << endl;

    // 关闭文件
    readfile.close();

    return 0;  
}

文件操作的资料

C File I/O https://www.geeksforgeeks.org/basics-file-handling-c/

C++ Files and Streams https://www.tutorialspoint.com/cplusplus/cpp_files_streams.htm

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值