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

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.xdnf.cn/news/7045.html

相关文章:

  • DeepSeek系列核心技术与贡献总结
  • 生产级编排AI工作流套件:Flyte全面使用指南 — Data input/output
  • 互联网大厂Java面试:从基础到复杂场景的技术挑战
  • 二:操作系统之进程概念
  • Unity学习总结篇(1)关于各种坐标系
  • 信息学奥赛一本通1012:计算多项式的值
  • Spring-Beans的生命周期的介绍
  • python3.13版本降为3.12
  • 基于STM32F103与Marvell88W8686的WIFI无线监控视频传输系统研发(论文)
  • 生成树的保护机制
  • 【运营商查询】批量手机号码归属地和手机运营商高速查询分类,按省份城市,按运营商移动联通电信快速分类导出Excel表格,基于WPF的实现方案
  • 院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵
  • AI驱动的研发流程:定义高度专业和系统化的规划基准
  • 软件架构设计--期末复习
  • 5月18总结
  • 拓展运算符
  • 海盗王改60帧时有关树木抖动的问题
  • 数字电子技术基础(六十)——使用Digital软件绘制脉冲触发的触发器
  • 《Python星球日记》 第89天:LlamaIndex 与知识图谱
  • 中国与全球电子取证行业市场报告(公开信息版)
  • 生产模式下react项目报错minified react error #130的问题
  • 互联网大厂Java求职面试:AI与大模型应用集成及云原生挑战
  • Java核心API实战:从字符串到多线程全解析
  • symfonos: 2靶场
  • Compose笔记(二十五)--Brush
  • 行业事件 | 中国灾害防御协会雷电灾害分会在京正式成立
  • MySQL开发规范
  • Atcoder Beginner Contest 406
  • 网络安全深度解析:21种常见网站漏洞及防御指南
  • 一文读懂----Docker 常用命令