C++:文件内容完全读入

在上一篇文章中我留下了一点小坑:使用>> 运算符,这个运算符默认将空格作为分隔符,所以在文件内容读取的时候发现在读到空格时就会停止读取,导致读取内容不完整,这显然不符合日常的使用用能,那么今天就来讨论以下如何将文件内容完全读取。

1.std::getline()函数进行读取
#include<iostream>
#include<fstream>
​
int main() 
    std::ifstream inFile;
    inFile.open("File.txt");
    if (!inFile.is_open()) {
        std::cout << "文件打开失败" << std::endl;
        return 1;
    }
​
    char szBuffer[100] = {0};
    inFile.getline(szBuffer, sizeof(szBuffer));
    std::cout << szBuffer << std::endl;
    std::cout << "文件读取成功" << std::endl;
    system("pause");
    return 0;
}

这段代码的目的是打开名为 "File.txt" 的文件,读取文件的第一行内容,并将其输出到标准输出流(通常是终端)。如果文件打开失败,则输出一条错误消息。

  1. std::ifstream inFile;:创建了一个 std::ifstream 类型的文件输入流对象 inFile,用于读取文件内容。

  2. inFile.open("File.txt");:打开名为 "File.txt" 的文件,准备读取内容。如果文件打开成功,则可以从中读取数据。如果文件打开失败,则输出一条错误消息,并返回 1。

  3. if (!inFile.is_open()) { ... }:检查文件是否成功打开。如果文件未成功打开,输出一条错误消息,并返回 1。

  4. char szBuffer[100] = {0};:创建了一个大小为 100 的字符数组 szBuffer,用于存储文件内容。数组中所有元素初始化为 0。

  5. inFile.getline(szBuffer, sizeof(szBuffer));:使用 getline() 函数从文件流中读取一行数据,并将其存储到 szBuffer 中。这样可以确保读取到整行内容,不会受到空格的影响。

补充:getline()函数

basic_istream& __CLR_OR_THIS_CALL getline(_Elem *_Str, streamsize _Count)

该函数的两个参数分别表示:

1.字符数组或字符指针,用于存储从输入流中读取的内容。
2.表示最多读取多少个字符(包括终止符)。
  1. std::cout << szBuffer << std::endl;:将 szBuffer 中的内容输出到标准输出流,通常是终端。

  2. std::cout << "文件读取成功" << std::endl;:输出一条消息,表示文件读取成功。

  3. system("pause");:暂停程序的执行,等待用户按下任意键继续。这样可以防止程序运行后立即关闭窗口,以便查看输出结果。

  4. return 0;:返回值为 0,表示程序正常结束。

运行结果:

read()函数

read函数的用法

istream& read(char* s, streamsize n);
  • s 是一个指向字符数组的指针,表示要存储读取数据的位置。

  • n 是要读取的最大字节数。

read() 函数从当前文件位置开始读取数据,并将读取的数据存储到 s 指向的内存位置中,直到达到指定的字节数 n 或者到达文件末尾为止。

打印文件内容
char szBuffer[100] = {0};
inFile.read(szBuffer, sizeof(szBuffer));
std::cout << szBuffer << std::endl;
std::cout << "文件读取成功" << std::endl;

get()函数

get() 函数是用于逐字符读取文件内容的成员函数,属于 std::ifstream 类。它可以读取一个字符,并将文件读取位置后移一个字符。这个函数可以用来逐个字符地读取文件内容,直到文件结束。

char ch = 0;
while (inFile.get(ch))
{
    std::cout << ch;
}

可以通过上述代码逐字符读取文件内容并输出到终端

读取文件的方式远远不止我所说的这三种,欢迎补充!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Djanog的中间件

1 中间件的五个方法 process_request(self,request)process_response(self, request, response)process_view(self, request, view_func, view_args, view_kwargs)process_exception(self, request, exception)process_template_response(self,request,response) 中间件处理函…

详解运算符重载,赋值运算符重载,++运算符重载

目录 前言 运算符重载 概念 目的 写法 调用 注意事项 详解注意事项 运算符重载成全局性的弊端 类中隐含的this指针 赋值运算符重载 赋值运算符重载格式 注意点 明晰赋值运算符重载函数的调用 连续赋值 传引用与传值返回 默认赋值运算符重载 前置和后置重载 前…

Scikit-Learn

机器学习中的重要角色 Scikit-Leran&#xff08;官网&#xff1a;https://scikit-learn.org/stable/&#xff09;&#xff0c;它是一个基于 Python 语言的机器学习算法库。Scikit-Learn 主要用 Python 语言开发&#xff0c;建立在 NumPy、Scipy 与 Matplotlib 之上&#xff0c;…

嵌入式中strstr函数详解

一、strstr函数是什么? strstr函数是 C 语言中的一个标准库函数(使用时要引入头文件string.h),用于在一个字符串中查找另一个字符串首次出现的位置。如果找到子串,则返回子串在主串中首次出现的位置的指针;如果未找到,则返回 NULL。 二、使用场景 1.用来找出字符串1在字…

学习了解大模型的四大缺陷

由中国人工智能学会主办的第十三届吴文俊人工智能科学技术奖颁奖典礼暨2023中国人工智能产业年会于2024年4月14日闭幕。 会上&#xff0c;中国工程院院士、同济大学校长郑庆华认为&#xff0c;大模型已经成为当前人工智能的巅峰&#xff0c;大模型之所以强&#xff0c;是依托了…

GPT国内怎么用

2022年11月&#xff0c;OpenAI发布了ChatGPT&#xff0c;这标志着大型语言模型在自然语言处理领域迈出了巨大的一步。ChatGPT不仅在生成文本方面表现出了惊人的流畅度和连贯性&#xff0c;更为人工智能应用开启了全新的可能性。 ChatGPT的推出促进了人工智能技术在多个领域的广…

网工交换技术基础——VLAN原理

1、VLAN的概念&#xff1a; VLAN(Virtual LAN)&#xff0c;翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络&#xff0c;也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。 2、VLAN的主要作用&#xf…

stm32f103c8t6学习笔记(学习B站up江科大自化协)-SPI

SPI通信 SPI&#xff0c;&#xff08;serial peripheral interface&#xff09;&#xff0c;字面翻译是串行外设接口&#xff0c;是一种通用的数据总线&#xff0c;适用于主控和外挂芯片之间的通信&#xff0c;与IIC应用领域非常相似。 IIC无论是在硬件电路还是在软件时序设计…

JUC知识点三

执行TestFrames这个类的时候发生了什么呢&#xff1f; 执行TestFrames这个类的时候发生了什么呢&#xff1f; 1、首先执行一个类加载&#xff0c;把TestFrames这个类的二进制字节码加载到java虚拟机中的方法区内存中&#xff08;其实是二进制的字节码&#xff0c;只是为了好理…

linux运行ant 报错 Unable to locate tools.jar【已解决】

linux安装 ant 运行时报错 Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/lib/tools.jar 原因 已安装的jdk只有运行环境&#xff0c;没有tool.jar&#xff0c;而ant运行需要java开发环境&#xff0c;因…

如何进行数据库的迁移与同步——【DBA 从入门到实践】第四期

在日常的数据库运维工作中&#xff0c;我们时常会面临数据库替换、机房搬迁、业务测试以及数据库升级等任务&#xff0c;这些任务都需要对数据进行迁移和同步操作。【DBA 从入门到实践】第4期&#xff0c;将引导大家深入了解数据库迁移的流程&#xff0c;并探讨在迁移过程中可用…

Zynq学习笔记--AXI 总线仿真(AXI VIP)

目录 1. 概述 2. Simulation with AXI VIP 2.1 axi_vip_pkg 2.2 design_1_axi_vip_0_0_pkg 2.3 参数指定 3. 实例化注意事项 3.1 名称对应关系 3.2 寄存器地址 3.3 block design 1. 概述 AXI Verification IP&#xff08;AXI VIP&#xff09;是一种用于验证AXI总线协议的…

无需公网IP,安全稳定实现U8C异地访问

无需公网IP&#xff0c;安全稳定实现U8C异地访问 用友是全球领先的企业云服务与软件提供商&#xff0c; 在财务、人力、供应链、采购、制造、营销、研发、项目、资产、协同等领域为客户提供数字化、智能化、社会化的企业云服务产品与解决方案。 U8C是用友针对成长型、创新型…

ElasticSearch中使用向量和关键词联合检索

注&#xff1a;案例测试数据及其索引构建详见&#xff1a;ElasticSearch中使用bge-large-zh-v1.5进行向量检索&#xff08;一&#xff09;-CSDN博客 中的第三部分。 假设任务场景为&#xff1a;用“新疆”向量检索相关的数据&#xff0c;同时需要匹配关键词“巴州”。 首先获取…

最新免费 ChatGPT、GPTs、AI换脸(Suno-AI音乐生成大模型)

&#x1f525;博客主页&#xff1a;只恨天高 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ ChatGPT3.5、GPT4.0、GPTs、AI绘画相信对大家应该不感到陌生吧&#xff1f;简单来说&#xff0c;GPT-4技术比之前的GPT-3.5相对来说更加智能&#xff0c;会根据用户的要求生成多种内容…

基于快照行情的股票/基金 1分钟 K 线合成指南

1. 概述 由于不同交易所不同资产的交易规则是有差异的&#xff0c;导致不同交易所基于快照行情或逐笔成交合成不同资产1分钟 K 线的计算方法是不同的。 本教程旨在提高 DolphinDB 在具体业务场景下的落地效率&#xff0c;降低 DolphinDB 在实际业务使用中的开发难度。 本教程…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《含状态耦合约束的分布式船舶储能系统两层能量管理方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

计算机科学与导论 第十六章 安全

文章预览&#xff1a; 16.1引言16.1.1 安全目标16.1.2 攻击 16.2机密性16.2.1 对称密钥密码术16.2.2 非对称密钥密码术 16.1引言 为了安全&#xff0c;信息需要避开未授权的使用(机密性),保护信息不受到未授权的篡改(完整性)&#xff0c;并且对于得到授权的实体来说是需要时可…

uniapp之消除图片的空白占用空间

我们在使用uniapp开发的过程中一定会遇到一个情况就是我们加载的图片总有一点空白出现在不该出现的地方代码如下 <view style"background:#ff0000;"><image style"width:100%;"src"https://t7.baidu.com/it/u1819248061,230866778&fm19…

selenium_定位输入框并输入值_CLASS_NAME

找到class_name # 导包 from selenium import webdriver from time import sleep# 获取浏览器对象 from selenium.webdriver.common.by import Bydriver webdriver.Edge() # 打开url url r"C:\Users\黄永生\Desktop\软件测试\tpshop\web自动化_day01_课件笔记资料代码\0…