当前位置: 首页 > article >正文

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>)来处理文件,因为它提供了更高层次的抽象和更好的类型安全。


http://www.kler.cn/a/294870.html

相关文章:

  • 动态规划---解决多段图问题
  • 【C++】 list 与 string 基础与实现字符串操作
  • 【Python特征工程系列】利用SHAP进行特征重要性分析-XGB模型为例(案例+源码)
  • Django 详细入门介绍
  • 009_SSH_Mysql图书管理系统(学生注册 借书 还书 绵阳)——lwplus87(免费送)
  • 组件间通信(组件间传递数据)
  • arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o start.o start.s
  • 景联文科技:专业图像采集服务,助力智能图像分析
  • 关于 ubuntu系统install的cmake版本较低无法编译项目升级其版本 的解决方法
  • Vue 3中的 路由守卫:全面解析与使用教程
  • 计算机毕业设计选题推荐-茶园茶农文化交流平台-Java/Python项目实战
  • 《语文建设》
  • Map
  • C#中的各种画刷, PathGradientBrush、线性渐变(LinearGradientBrush)和径向渐变的区别
  • C++动态规划及九种背包问题
  • 结账打印--SAAS本地化及未来之窗行业应用跨平台架构
  • 828华为云征文|华为云Flexus X实例docker部署最新gitlab社区版,搭建自己的私人代码仓库
  • Python 设置跨文件的全局变量
  • C++竞赛初阶L1-15-第六单元-多维数组(34~35课)551: T456501 计算矩阵边缘元素之和
  • 利士策分享,如何规划多彩的大学生活?
  • redis中使用lua脚本
  • 在 Linux 和类 Unix 系统中,终端(Terminal)和 Shell
  • zblog自动生成文章插件(百度AI写作配图,图文并茂)
  • SpringBoot教程(十五) | SpringBoot集成RabbitMq(消息丢失、消息重复、消息顺序、消息顺序)
  • 深度学习与大模型第3课:线性回归模型的构建与训练
  • AI对于程序行业的冲击