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

C++(21):fstream的读取和写入

目录

1  ios::out

2 ios::in和is_open

3 put()方法

4 get()方法 

4.1 读取单个字符 

4.2 读取多个字符

4.3 设置终结符

5 getline()


1  ios::out

       打开文件用于写入数据。如果文件不存在,则新建该文件;如果文件原来就存在,则打开时清除原来的内容。

#include <fstream>
#include <iostream>using namespace std;    //引入整个命名空间int main()
{fstream file;file.open("test.txt",ios::out);if (!file.is_open()){cout << "文件打开失败!" << endl;return 0;}return 0;
}

        项目文件内不存在test.txt文件,则运行后生成。

2 ios::in和is_open

        ios::in:打开文件用于读取数据。如果文件不存在,则打开出错

         is_open :用于检查文件流是否成功打开并关联到文件。它返回一个布尔值,指示文件是否已打开。

        如果将ios::out换成ios::in,则会提示文件打开失败。 

3 put()方法

        当 fstream 文件流对象调用 put () 方法时,该方法的功能就变成了向指定文件中写入单个字符。 put () 方法的语法格式如下: 其中,括号内用于指定要写入文件的字符。 该方法会返回一个调用该方法的对象的引用形式。

#include <fstream>
#include <iostream>using namespace std;int main()
{fstream file;file.open("test.txt",ios::out);file.put('c');char c = 'w';file.put(c);file.close();return 0;
}

4 get()方法 

         fstream是C++标准库中用于文件输入输出的类,它继承自iostreamget()方法是fstream(以及其基类istream)提供的一个常用成员函数,主要用于从文件或输入流中读取字符

注意:

        ios:in | ios::out:打开已存在的文件,既可读取其内容,也可向其写入数据。文件刚打开时,原有内容保持不变,如果文件不存在,则打开出错。 

4.1 读取单个字符 

#include <fstream>
#include <iostream>using namespace std;int main()
{fstream file;file.open("test.txt",ios::in | ios::out);if (!file.is_open()){cout << "文件打开失败!" << endl;return 0;}char n;n = file.get();cout << n;n = file.get();cout << n;n = file.get();cout << n;file.close();return 0;
}

4.2 读取多个字符

        首先在test.txt文件存入多行字符。

        遇到分隔符时停止读取,但分隔符不会被提取。

#include <fstream>
#include <iostream>using namespace std;int main()
{fstream file;file.open("test.txt",ios::in || ios::out);if (!file.is_open()){cout << "文件打开失败!" << endl;return 0;}char str[4][1024] = { 0 };//get方法读到换行符就停止了,所以每读完一行需要把该行的换行符读掉file.get(str[0],1024);//读取第1行file.get();file.get(str[1], 1024);//读取第2行file.get();file.get(str[2], 1024);//读取第3行file.get();file.get(str[3], 1024);//读取第4行for (int i = 0; i < 4; i++){cout << str[i] << endl;}file.close();return 0;
}

4.3 设置终结符

        get()支持人为设置终结符。

	file.get(str[0], 1024, 't');//设置终结符为‘t’,读到t停止cout << str[0];

5 getline()

        类似get(),但会提取并丢弃分隔符。

#include <fstream>
#include <iostream>using namespace std;int main()
{fstream file;file.open("test.txt",ios::in || ios::out);if (!file.is_open()){cout << "文件打开失败!" << endl;return 0;}char str[4][1024] = { 0 };for (int i = 0; i < 4; i++){file.getline(str[i], 1024);//整行读取,排除终结符}for (int i = 0; i < 4; i++){cout << str[i] << endl;}file.close();return 0;
}

http://www.lryc.cn/news/2380333.html

相关文章:

  • NAT/代理服务器/内网穿透
  • Unity 多时间源Timer定时器实战分享:健壮性、高效性、多线程安全与稳定性能全面解析
  • 深入解析Spring Boot与Spring Security的集成实践
  • 【iOS】探索消息流程
  • 用户账号及权限管理:企业安全的基石与艺术
  • 413 Payload Too Large 问题定位
  • 2025年渗透测试面试题总结-360[实习]安全工程师(题目+回答)
  • Ubuntu16.04升级gcc/g++版本方法
  • 微信小程序van-dialog确认验证失败时阻止对话框的关闭
  • 边缘计算模块
  • 【极兔快递Java社招】一面复盘|数据库+线程池+AQS+中间件面面俱到
  • OceanBase 的系统变量、配置项和用户变量有何差异
  • Git本地使用小Tips
  • 【Python】Jupyter指定具体路径
  • ThreadLocal作一个缓存工具类
  • RNope:结合 RoPE 和 NoPE 的长文本建模架构
  • virtualbox虚拟机中的ubuntu 20.04.6安装新的linux内核5.4.293 | 并增加一个系统调用 | 证书问题如何解决
  • unity UGUI虚线框shader
  • vue2、vue3项目打包生成txt文件-自动记录打包日期:git版本、当前分支、提交人姓名、提交日期、提交描述等信息 和 前端项目的版本号json文件
  • chirpstack v4版本 全流程部署[ubuntu+docker]
  • DeepSeek 赋能数字孪生:重构虚实共生的智能未来图景
  • 每日一道leetcode(增加版)
  • 数字信号处理-大实验1.1
  • Java大厂求职面试:探讨Spring Boot与微服务架构
  • SAP ABAP 中驼峰字段名转 JSON 的实现方案
  • 对抗性机器学习:AI模型安全防护新挑战
  • [[春秋云境] Privilege仿真场景
  • Redis学习打卡-Day3-分布式ID生成策略、分布式锁
  • 计算机网络:怎么理解调制解调器的数字调制技术?
  • 数据库第二次作业--SQL的单表查询与多表查询