首页 > 编程语言 >c++标准库中对文件读写的函数与类

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

时间:2024-09-08 13:22:21浏览次数:9  
标签:std 文件 库中 读写 写入 c++ file include 读取

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

标签:std,文件,库中,读写,写入,c++,file,include,读取
From: https://blog.csdn.net/zkmrobot/article/details/141999213

相关文章

  • Qt/C++音视频开发 - mpv解码播放
    Qt/C++音视频开发-mpv解码播放介绍一、应用使用场景Qt/C++结合mpv在音视频开发中的典型应用场景包括:媒体播放器:实现跨平台的高性能媒体播放器,支持各种音视频格式。实时流媒体播放:比如直播或视频会议系统的开发。媒体编辑工具:用于视频剪辑和音频编辑的软件。嵌入式系统:......
  • C++单例模式
    C++单例模式使用单例模式的理由在开发过程中,很多时候一个类我们希望它只创建一个对象,比如:线程池、缓存、网络请求等。当这类对象有多个实例时,程序就可能会出现异常,比如:程序出现异常行为、得到的结果不一致等。单例主要有这两个优点:提供了对唯一实例的受控访问。由于在系统内......
  • 【C++】vector的模拟实现
    文章目录一、前言二、构造函数模拟实现构造函数调用不明确1.问题描述2、解决调用不明确的方法三、基础接口1.empty和clear2.size和capacity3.[]和iterator四、resize和reservereserve中的深浅拷贝问题1、reserve中浅拷贝发生原因2、浅拷贝发生的图解3、解决方法五、尾......
  • 【C++】简述STL——string类的使用
    文章目录一、STL的简述1.STL的框架2.STL版本二、string1、string的介绍2、为什么string类要实现为模板?三、string的构造接口四、string的容量相关的接口五、string对象修改相关的接口1、insert2.earse3、assign4、replace六、string对象字符串运算相关接口1、c_str2、......
  • C++内存管理
    内存是什么?内存就是计算机的存储空间,用于存储程序的指令、数据和状态。在C语言中,内存被组织成一系列的字节,每个字节都有一个唯一的地址。程序中的变量和数据结构存储在这些字节中。根据变量的类型和作用域,内存分为几个区域,如栈(stack)、堆(heap)和全局/静态存储区。内存编址计算......
  • C++ STL-deque容器入门详解
    1.1deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:deque内部......
  • C++ STL-Map容器从入门到精通详解
    1.简介Map也是一种关联容器,它是键—值对的集合,即它的存储都是以一对键和值进行存储的,Map通常也可以理解为关联数组(associativearray),就是每一个值都有一个键与之一一对应,因此,map也是不允许重复元素出现的。同时map也具备set的相关功能,其底层也会将元素进行自动排序。功能......
  • 【C++ Primer Plus习题】12.1
    大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←问题:解答:main.cpp#include<iostream>#include"Cow.h"usingnamespacestd;intmain(){ Cowc1; ......
  • C++编程-搜索与回溯算法2
    目录每日一诗先言正文例题六题目描述算法分析标准程序例题七:选书题目描述算法分析标准程序输出例题八:跳马问题题目描述标准程序小练习题目描述输入输出样例输入 复制样例输出 复制每日一诗红豆生南国,春来发几枝。愿君多采撷,此物最相思。Redbea......
  • 条款05: 了解c++默默编写并调用哪些函数
    1.如果没有声明任何构造函数,编译器会为你声明一个default构造函数2.惟有default构造函数被需要,才会被编译器创建出来classEmpty{public:Empty(){}//1.默认构造~Empty(){}//2.析构函数Empty(constEmpty&rhs){}//3.copy构造Empty&operator=(c......