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

C++ - 文件读写(fstream)

因为平时写算法很少用到文件读取,写的十分基础,带将来有了进一步认识再来补充。
参考:
《Essential C++》

文章目录

  • 一、 文件读写操作头文件:
  • 二、输入方法
    • 2.1 定义ofstream对象(以输出模式开启test_data.txt):
    • 2.2 追加模式(append mode):
    • 2.3 完整示例
  • 三、读取方法
    • 3.1 定义ifstream对象(以输入模式开启test_data.txt):
    • 3.2 完整示例
  • 四、IO方法

一、 文件读写操作头文件:

#include <fstream>

二、输入方法

2.1 定义ofstream对象(以输出模式开启test_data.txt):

  1. 如果文件名不存在,则会在当前文件目录下创建一个新文件。
  2. 文件中原有数据会被清空。
ofstream outfile("test_data.txt");

“outfile”返回值为布尔值,代表文件是否打开成功

2.2 追加模式(append mode):

不丢弃原文件中数据,在原文件中数据末尾开始写入。

ios_base::app

使用案例:

ofstream outfile("test_data.txt", ios_base::app);

2.3 完整示例

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

int main()
{
    ofstream outfile("test_data.txt", ios_base::app);
    if (!outfile)
    {
        cerr << "Oops! Unable to save session data!\n";
    }
    else {
        outfile << "Write something..." << endl;
    }
    return 0;
}

三、读取方法

3.1 定义ifstream对象(以输入模式开启test_data.txt):

若文件打开成功,则文件的写入位置设定在文件的起始位置处。

ifstream infile("test_data.txt");

3.2 完整示例

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

int main()
{
    ifstream infile("test_data.txt");
    if (!infile)
    {
        cerr << "Oops! File opening failed!\n";
    }
    else {
        string name;
        while(infile >> name) {
            cout << "Find Name: " << name << endl;
        }
    }
    return 0;
}

四、IO方法

若希望同时读写同一个文件,则需要以追加模式打开。

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

int main()
{
    fstream iofile("test_data.txt", ios_base::in|ios_base::app);
    if (!iofile)
    {
        cerr << "Oops!\n";
    }
    else {
        // 开始读取前,将文件重新定位至起始处
        iofile.seekg(0);
    }
    return 0;
}

相关文章:

  • JavaScript:二维码生成与解析
  • SpringBoot 2 配置文件 2.4 多环境配置
  • JavaWeb编年史(远古时期)
  • 【Spring】面向切面编程详解(AOP)
  • 第四课 ceph基础学习-RGW高可用集群和集群测试
  • 幼儿园小程序实战开发教程
  • JavaScript基础总结---重点
  • HashMap和Hashtable(全网最详细)
  • 【趣学算法】Day1 算法简介+斐波那契数列
  • JDK 9-17 新特性介绍
  • 力扣 每日一题 902. 最大为 N 的数字组合【难度:困难,rating: 1989】(数学 / 数位dp)
  • 【微信小程序】电商移动前端API文档
  • 基于FPGA的远程升级系统概述
  • 适用于非科班的深度学习/机器学习快速上手路线
  • 【Python 之 Bluebridge Cup】day_007(涉VIP题,目前没有权限提交,需再提交):阶乘计算(高精度) || 高精度加法
  • python3.6+scrapy+mysql 爬虫实战
  • [译]前端离线指南(上)
  • Javascript基础之Array数组API
  • JS 面试题总结
  • Linux中的硬链接与软链接
  • nginx 负载服务器优化
  • php中curl和soap方式请求服务超时问题
  • tab.js分享及浏览器兼容性问题汇总
  • 仿天猫超市收藏抛物线动画工具库
  • 前端知识点整理(待续)
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 深入浅出Node.js
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 我的业余项目总结
  • 译有关态射的一切
  • AI算硅基生命吗,为什么?
  • 容器镜像
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ###STL(标准模板库)
  • #pragma预处理命令
  • (C)一些题4
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (九)c52学习之旅-定时器
  • (论文阅读40-45)图像描述1
  • (四) Graphivz 颜色选择
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .htaccess 强制https 单独排除某个目录
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @EnableWebMvc介绍和使用详细demo
  • [1127]图形打印 sdutOJ
  • [20190113]四校联考
  • [2669]2-2 Time类的定义