C++文件操作-文本文件-读文件

第一种

#include<iostream>//1、包含头文件 fstream
#include<fstream>
using namespace std;void test01()
{//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据//第一种char buf[1024] = { 0 };while (ifs >> buf){cout << buf << endl;}//5、关闭文件ifs.close();}
int main() {test01();system("pause");return 0;
}
 char buf[1024] = { 0 };while (ifs >> buf){cout << buf << endl;}
  • char buf[1024] = { 0 }; 声明了一个字符数组 buf,用于存储从文件中读取的数据,数组大小为 1024 字节。
  • while (ifs >> buf) 这一行是一个循环,每次从文件流 ifs 中读取下一个单词,并将其存储到 buf 中。读取操作会自动以空格作为分隔符,每次读取一个单词或一段字符,直到遇到文件结尾。

第二种

#include<iostream>//1、包含头文件 fstream
#include<fstream>
using namespace std;void test01()
{//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据//第二种char buf[1024] = { 0 };while (ifs.getline(buf, sizeof(buf))){cout << buf << endl;}//5、关闭文件ifs.close();}
int main() {test01();system("pause");return 0;
}
  • while (ifs.getline(buf, sizeof(buf))) 是一个循环,每次从文件流 ifs 中读取一行数据,存储到 buf 中。
  • getline() 函数会读取文件直到换行符或文件结束符 \n,并将读取的内容存储到 buf 中,同时将 \n 替换为 ‘\0’(字符串结束符)。

第三种

#include<iostream>
#include<string>
//1、包含头文件 fstream
#include<fstream>
using namespace std;void test01()
{//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据//第三种string buf;while (getline(ifs,buf)){cout << buf << endl;}//5、关闭文件ifs.close();}
int main() {test01();system("pause");return 0;
}
string buf;
while (getline(ifs, buf))
{cout << buf << endl;
}
  • string buf; 声明了一个 std::string 类型的变量 buf,用于存储从文件中读取的每一行数据。
  • while (getline(ifs, buf)) 是一个循环,每次从文件流 ifs 中读取一行数据,存储到 buf 中。getline() 函数会读取文件直到换行符或文件结束符 \n,并将读取的内容存储 到 buf 中。

优点

  • 使用 std::string 类型代替字符数组 char buf[1024],使得代码更加现代化和易读。
  • getline() 函数会自动处理换行符和文件结束符,不需要手动添加字符串结束符 '\0'
  • getline() 可以处理不同长度的行,不像使用字符数组时需要预先确定缓冲区大小。

第四种

#include<iostream>
#include<string>
//1、包含头文件 fstream
#include<fstream>
using namespace std;void test01()
{//2、创建流对象ifstream ifs;//3、打开文件 并且判断是否打开成功ifs.open("test.txt", ios::in);if (!ifs.is_open()){cout << "文件打开失败" << endl;return;}//4、读数据//第四种char c;while ((c = ifs.get()) != EOF){cout << c;}//5、关闭文件ifs.close();}
int main() {test01();system("pause");return 0;
}
char c;
while ((c = ifs.get()) != EOF)
{cout << c;
}
  • char c; 声明了一个字符变量 c,用于存储从文件中逐字符读取的数据。
  • while ((c = ifs.get()) != EOF) 是一个循环,每次使用 ifs.get() 方法从文件流 ifs 中读取一个字符,并将其赋值给 c。循环会继续执行直到 ifs.get() 返回的字符为文件结束符 EOF
  1. EOF(End Of File)处理
    • EOF 是一个宏,表示文件结束符。在读取文件时,ifs.get() 会返回 EOF 表示已经到达文件末尾,循环因此终止。

注意事项:

  • 这种方法逐字符读取文件内容,适合处理特定格式的文件或者需要精确控制每个字符的处理。
  • 需要确保文件在使用 ifs.open() 打开后成功,否则可能会导致未定义的行为或错误。
  • 在使用 ifs.get() 时,要注意处理特殊字符(如换行符 \n)或者特定的文件编码格式(如 UTF-8)可能需要额外的处理逻辑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874279.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Git】(基础篇六)—— 发现好项目

发现github上的好项目 在开源社区中&#xff0c;发现好的项目&#xff0c;不论是对于自己的学习&#xff0c;还是在前人的基础上继续改进&#xff0c;都十分重要&#xff0c;本文为你介绍如何在github上面找到好的项目&#xff08;gitee同理&#xff09; 关注活跃大牛 GitHu…

ARM架构(二)—— arm v7-a/v8/v9寄存器介绍

1、ARM v7-A寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样&#xff0c; 通用寄存器&#xff1a;31个 1.2 程序状态寄存器 CPSR是程序状态毒存器&#xff0c;保存条件标志位&#xff0c;中断禁止位&#xff0c;当前处理器模式等控制和状态位。每种异常模式下还存在SPS…

智密腾讯云直播组建--直播间API对象--ZhimiTRTCLiveRoom

函数名描述 register 注册SDK isLogined 是否登录SDK addEventListener 添加事件监听 removeEventListener 移除事件监听 inRoomHook 判断是否已经进入房间 getUserId 获取当前用户UserId getRoomId 获取当前房间Id getSDKConfig 获取SDK配置 login 登录SDK …

实现接口幂等性的8种解决方案

古语云&#xff1a;“一而再&#xff0c;再而三&#xff0c;其效不二” 俗语讲&#xff1a;被虐千百遍&#xff0c;依然如初恋 数学符号&#xff1a;f(f(f(x))) f(x) 即无论操作执行一次还是多次&#xff0c;其效果始终如一&#xff0c;不会有差异。这就是幂等性。 文章导读 什…

FPGA-PLL IP核的使用

1.前言 IP核是使用FPGA进行快速开发的一大法宝&#xff0c;FPGA有几个常用的IP核&#xff0c;如今天要写的PLL&#xff0c;即锁相环&#xff0c;还有FIFO&#xff0c;ROM等。熟练使用这些IP核&#xff0c;在一一些大型的项目中会省很多的精力&#xff0c;今天就通过一个实例来…

55 、mysql的存储引擎、备份恢复以及日志备份、恢复

一、数据库的存储引擎&#xff1a; 1.1、存储引擎的概念 概念&#xff1a;存储引擎&#xff0c;就是一种数据库存储数据的机制&#xff0c;索引的机制&#xff0c;索引的技巧&#xff0c;锁定水平。 存储的方式和存储的格式。 存储引擎也属于mysql当中的组件&#xff0c;实…

Linux挂载磁盘目录

一、背景 由于安装oracle数据库&#xff0c;磁盘空间不足&#xff0c;已经加了存储&#xff0c;但是没有挂载&#xff0c;需要将/dev/sdb全部挂载到/oracle目录下 [rootdatabase-001 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk …

分布式锁在AI大模型调用中的应用

1. 技术背景 AI大模型的调用往往是一个高资源消耗的操作&#xff0c;在实际应用中&#xff0c;为了防止恶意用户使用辅助工具频繁地调用这些大模型&#xff0c;占用大量服务器资源&#xff0c;影响其他用户的请求处理&#xff0c;降低系统的整体性能和服务质量&#xff0c;使用…

Android 记录锁屏的上层相关源码以及debug WindowManager

SettingsProvider frameworks/base/packages/SettingsProvider/res/values/defaults.xmldevice/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml //device的overlay会覆盖frameworks的SettingsProvider // 关于锁屏配置<inte…

HTTPServer改进思路2(mudou库核心思想融入)

mudou网络库思想理解 Reactor与多线程 服务器构建过程中&#xff0c;不仅仅使用一个Reactor&#xff0c;而是使用多个Reactor&#xff0c;每个Reactor执行自己专属的任务&#xff0c;从而提高响应效率。 首先Reactor是一种事件驱动处理模式&#xff0c;其主要通过IO多路复用…

对象存储:阿里云OSS、腾讯云COS与七牛云KODO的深度解析

随着云计算的普及&#xff0c;对象存储&#xff08;Object Storage Service&#xff09;作为数据存储领域的一项关键技术&#xff0c;因其可扩展性、高可用性和成本效益而受到广泛欢迎。本文将深入探讨阿里云的OSS、腾讯云的COS以及七牛云的KODO&#xff0c;分析这些服务的特点…

Linux实用操作三

文章目录 Linux实用操作三网络传输ping命令介绍&#xff1a;示例&#xff1a; wget命令介绍&#xff1a;示例&#xff1a; curl命令介绍&#xff1a;示例&#xff1a; 端口介绍&#xff1a;端口的划分&#xff1a;查看端口占用&#xff1a; 进程管理进程介绍&#xff1a;查看进…

基于WebGoat平台的SQL注入攻击

目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素&#xff08;机密性、完整性、可用性&…

代码随想录第五十九天 | 115.不同的子序列,583. 两个字符串的删除操作, 72. 编辑距离

115.不同的子序列 看完想法&#xff1a;这个题目只涉及删减&#xff0c;具体是 s 字符串的删减&#xff0c;t 不需要动。当s[ i ] t[j]时&#xff0c;有两种情况&#xff0c;可以用s[i]也可以不用&#xff0c;而s[i] !t[j]时只有一种情况&#xff0c;需要删除s[i]进一步比较。…

【MySQL-17】存储过程-[变量篇]详解-(系统变量&用户定义变量&局部变量)

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《Lin…

SpringBoot常用功能实现

1. 配置文件多环境配置 1.1 创建不同环境配置文件 文件名前缀和后缀为标准固定格式&#xff0c;不可以改变。 1.2 pom中加入文件配置 可以使用<activation>标签设置默认环境。 <profiles><profile><id>dev</id><activation><active…

内置华为视频终端API接口的中央控制系统

内置华为视频终端API接口的中控系统是一种高度集成化的智能控制系统&#xff0c;它通过将华为视频终端的控制功能集成到中控系统中&#xff0c;实现了对华为视频终端的远程控制和集中管理。以下是对该系统的详细介绍&#xff1a; 一、系统概述 该系统通过调用华为视频终端提供…

数据结构(队列及其实现)

概念与结构 概念&#xff1a;只允许在⼀端进⾏插⼊数据操作&#xff0c;在另⼀端进⾏删除数据操作的特殊线性表&#xff0c; 队列具有先进先出FIFO(First In First Out)原则。 ⼊队列&#xff1a;进⾏插⼊操作的⼀端称为队尾 出队列&#xff1a;进⾏删除操作的⼀端称为队头…

宝塔Wordpress 插件 Redis object cache 导致内存很高 80%以上的原因和解决

查看内存前X 使用以下命令查看前10&#xff0c;修改10数字即可查看前X ps aux | head -1;ps aux |grep -v PID |sort -rn -k 4 | head -10 查看cpu占用 查看前10 ps aux | head -1;ps aux |grep -v PID |sort -rn -k 3 | head -10 原因是 4GiB 内存的服务器&#xff0c;Redis会…

Python | Leetcode Python题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution:def missingNumber(self, nums: List[int]) -> int:n len(nums)total n * (n 1) // 2arrSum sum(nums)return total - arrSum