c++标准库中对文件读写的函数与类

在 C++ 中,标准库提供了一组文件操作的函数和类,可以用来处理文件的读取、写入、打开、关闭等操作。主要使用的库是 <fstream><cstdio>。以下是详细的举例说明:

1. 使用 <fstream>

<fstream> 提供了三个主要的类用于文件操作:

  • std::ifstream:用于文件读取。
  • std::ofstream:用于文件写入。
  • std::fstream:用于文件的读取和写入。
1.1 读取文件 (std::ifstream)
#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::ifstream inputFile("example.txt"); // 打开文件用于读取

    if (!inputFile) {
        std::cerr << "Unable to open file for reading.\n";
        return 1;
    }

    std::string line;
    while (std::getline(inputFile, line)) { // 逐行读取文件内容
        std::cout << line << std::endl;
    }

    inputFile.close(); // 关闭文件
    return 0;
}

1.2 写入文件 (std::ofstream)

#include <iostream>
#include <fstream>

int main() {
    std::ofstream outputFile("example.txt"); // 打开文件用于写入

    if (!outputFile) {
        std::cerr << "Unable to open file for writing.\n";
        return 1;
    }

    outputFile << "Hello, world!" << std::endl; // 写入内容到文件

    outputFile.close(); // 关闭文件
    return 0;
}

1.3 读写文件 (std::fstream)

#include <iostream>
#include <fstream>
#include <string>

int main() {
    std::fstream file("example.txt", std::ios::in | std::ios::out | std::ios::trunc); // 打开文件用于读写

    if (!file) {
        std::cerr << "Unable to open file for reading and writing.\n";
        return 1;
    }

    file << "Writing to file\n"; // 写入内容到文件
    file.seekg(0); // 移动读取位置到文件开始

    std::string line;
    while (std::getline(file, line)) { // 逐行读取文件内容
        std::cout << line << std::endl;
    }

    file.close(); // 关闭文件
    return 0;
}

2. 使用 <cstdio>

<cstdio> 提供了 C 风格的文件操作函数,如 fopen, fclose, fread, fwrite, fprintf, fscanf 等。

2.1 读取文件 (fread)
#include <cstdio>

int main() {
    FILE* file = std::fopen("example.txt", "r"); // 打开文件用于读取
    if (!file) {
        std::perror("Unable to open file for reading");
        return 1;
    }

    char buffer[256];
    while (std::fgets(buffer, sizeof(buffer), file)) { // 逐行读取文件内容
        std::printf("%s", buffer);
    }

    std::fclose(file); // 关闭文件
    return 0;
}

2.2 写入文件 (fprintf)

#include <cstdio>

int main() {
    FILE* file = std::fopen("example.txt", "w"); // 打开文件用于写入
    if (!file) {
        std::perror("Unable to open file for writing");
        return 1;
    }

    std::fprintf(file, "Hello, world!\n"); // 写入内容到文件

    std::fclose(file); // 关闭文件
    return 0;
}

2.3 读写文件 (fopen with "r+" mode)

#include <cstdio>

int main() {
    FILE* file = std::fopen("example.txt", "r+"); // 打开文件用于读写
    if (!file) {
        std::perror("Unable to open file for reading and writing");
        return 1;
    }

    std::fprintf(file, "Writing to file\n"); // 写入内容到文件
    std::rewind(file); // 移动文件指针到文件开始

    char buffer[256];
    while (std::fgets(buffer, sizeof(buffer), file)) { // 逐行读取文件内容
        std::printf("%s", buffer);
    }

    std::fclose(file); // 关闭文件
    return 0;
}

总结

  • std::ifstream:用于从文件中读取数据。
  • std::ofstream:用于将数据写入文件。
  • std::fstream:同时支持读取和写入操作。
  • <cstdio>:提供了 C 风格的文件操作函数,如 fopen, fclose, fread, fwrite, fprintf, fscanf 等。

根据需要选择适合的函数或类来进行文件操作,通常建议使用 C++ 的流库(<fstream>)来处理文件,因为它提供了更高层次的抽象和更好的类型安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值