C++文件读取

2023-11-13

简介:最近在复习C++在写一个停车场管理系统项目的时候突然遇到了关于文件的处理,感觉忘记的差不多了,重新复习了一下,也顺便写一下笔记,当然在一个文章中有很多细节都没有进行深入的研究,只是知道一些基本的用法。主要感觉在学完数据库后再用文件系统进行数据的存储有一些奇怪,但是为了复习还是选择的再过一遍。

数据类型:

ofstream: 该数据类型表示输出文件流,用于创建文件并向文件写入信息。
ifstream: 该数据类型表示输入文件流,用于从文件读取信息。
fstream: 该数据类型通常表示文件流,且同时具有 ofstream 和 ifstream 两种功能,这意味着它可以创建文件,向文件写入信息,从文件读取信息。

打开文件:

open()函数:open() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。

void open(const char *filename, ios::openmode mode);

参数说明:

const char*filename:文件名称实际上是文件的路径

直接路径:c:/c++/c++.txt           适用于任何方式

间接路径:c++.txt                     文件和.cpp文件在同一个文件夹下面

个人的总结:从维护的角度来讲,采用的路径一般是间接路径,反正就是一一般你要使用的文件基本上都和你的源程序在一起,在这种情况下如果我们进行程序的转移的话就不用再去考虑文件位置变化的问题了。

ios::openmode mode:打开文件的方法可以多个进行组合用逻辑或

打开方式: 功能描述:
ios::app 追加模式。所有写入都追加到文件末尾。
ios::ate 文件打开后定位到文件末尾。
ios::in 打开文件用于读取。
ios::out 打开文件用于写入。
ios::trunc 如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为 0。

实例演示:

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

int main()
{
	fstream file("file.txt");

	if (file.is_open())
	{
		cout << "文件打开成功!" << endl;
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}
	return 0;
}

解释:

fstream默认的是读写的方式打开文件,这是间接的文件打开方式,这种情况是比较简单的,文件和源程序在一起:

 文本文件也可以在源文件的上一层,这个时候要用“.”运算符返回上一层在打开具体的方法可以自行查阅。

is_open()函数:用来检验文件是否打开成功,这个判断在你进行文件的读写操作前是很有意义的,如果文件打开失败了,其他的操作都没什么意义。

文件关闭函数:

void close():    通过对象进行直接调用

写文件:

使用流插入运算符( << )向文件写入信息,就像使用该运算符输出信息到屏幕上一样。唯一不同的是,在这里您使用的是 ofstream 或 fstream 对象,而不是 cout 对象。

读文件:

使用流提取运算符( >> )从文件读取信息,就像使用该运算符从键盘输入信息一样。唯一不同的是,在这里您使用的是 ifstream 或 fstream 对象,而不是 cin 对象。

文件操作流程:

读文件:

1、声明头文件 #include<fstream>

2、实例化对象: ifstream wfile;

3、文件打开方式:file.open("文件的路径",打开方式),文件打开之后要判断文件是否打开成功。file.is_open()返回值是bool型,成功true,失败false

4、进行文件操作

5、关闭文件

代码演示:

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

int main()
{
	ifstream readFile;
	readFile.open("file.txt", ios::in);

	if (readFile.is_open())
	{
		cout << "文件打开成功!" << endl;
		cout << "类容如下:" << endl;
		char buff[1000] = { 0 };
		while (readFile >>buff)
		{
			cout << buff << endl;
		}
	}
	else
	{
		cout << "文件打开失败!" << endl;
	}
return 0;
}

运行结果:

采用“>>”运算符进行读取文件时, 它会将空格作为终止条件,在这种情况下没有办法进行一行一行的输出。

如果输出乱码可以参考:https://jingyan.baidu.com/article/ff42efa9e04733c19e2202f4.html

TXT文件默认的是UTF-8编码格式,我们要将其改为ANSI编码格式,这个具体原因我也不知道。

写文件:

1、声明头文件 #include<fstream>

2、实例化对象:fstream rwfile;  ofstream rfile; 

3、文件打开方式:file.open("文件的路径",打开方式)

4、进行文件操作

5、关闭文件

区别:写文件是不需要判断文件是否打开成功的,因为在写文件时如果文件不存在,程序会自动创建一个文件。

代码部分:

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

int main()
{
	ofstream writeFile;
	writeFile.open("wirtefile.txt", ios::out);

	string name = "高尔基";
	string speaking = "书籍是人类进步的阶梯";

	writeFile << name << " " << speaking;

	writeFile.close();

	return 0;
}

输出部分:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++文件读取 的相关文章

  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

    与最初的代码相比 唯一的更改是在ViewControl swift override func viewDidLoad newMessage hidden true super viewDidLoad Do any additional s
  • 从 MVC 迁移到 ASP.NET Core 3.1 中的端点路由时,具有角色的 AuthorizeAttribute 不起作用

    我正在尝试将我的项目从 UseMVC asp net core 2 2 兼容样式 升级到 UseEndpoint Routing 并且我的所有请求都被重定向到我的验证失败页面 它与声明有关 如果我删除 Authorize Roles Adm
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 对齐 GridView 中的行值

    我需要在 asp net 3 5 中右对齐 gridview 列中的值 我怎样才能做到这一点
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 是否可以有一个 out ParameterExpression?

    我想定义一个 Lambda 表达式out范围 有可能做到吗 下面是我尝试过的 C Net 4 0 控制台应用程序的代码片段 正如您在 procedure25 中看到的 我可以使用 lambda 表达式来定义具有输出参数的委托 但是 当我想使
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触

随机推荐

  • altium designer(AD)封装焊盘等间距排列

    使用环境 蓝色粗体字为特别注意内容 1 软件环境 Win7 32 bit AD Altium Designer 10 39 我们在使用AD Altium Designer 绘制封装库的时候 可能需要等间距排列很多焊盘 如果手工排列的话不仅费
  • 集中式和分布式

    集中式 VXLAN网络中 L3网关集中在一组或几组交换机上 与防火墙 LB 各类服务器相连的Leaf交换机的VTEP 只作为VXLAN的L2网关 分布式 Network Overlay分布式VXLAN网络中 所有Leaf节点物理交换机都具备
  • mysql数据库自动重新连接_数据库连接池自动重新连接问题

    http sailorls blogchina com 2606862 html tomcat连接池自动重新连接问题 Tag Tag tomcat 连接池 重新连接 在以往的开发中 常常遇到tomcat连接池断掉后 比如网络断线 无法自动重
  • 大文件上传断点续传具体实现

    是什么 不管怎样简单的需求 在量级达到一定层次时 都会变得异常复杂 文件上传简单 文件变大就复杂 上传大文件时 以下几个变量会影响我们的用户体验 服务器处理数据的能力 请求超时 网络波动 上传时间会变长 高频次文件上传失败 失败后又需要重新
  • java循环删除文件数组失败

    背景 后台java处理从服务器下载已有的N个文件成临时文件 压缩成压缩文件后 重新上传新的压缩文件 循环删除临时文件数组 file delete 只删除成功最后一个 过程 已确认无未关闭的流 无占用文件资源 循环删除就是只删除最后一个 删除
  • canvas学习(十):font字体设置

    canvas中的字体设置比较简单 这里就不说别的了 直接上实例代码 window nl ad function var myCanvas document getElementById myCanvas if myCanvas getCon
  • IntelliJ IDEA 的chatGPT插件 Bito

    1 chatGPT爆火 最近你是否听说过 ChatGPT 这个词 它指的是一种基于深度学习技术的人工智能语言生成模型 自从2018年由OpenAI发布以来 ChatGPT就备受关注 甚至在2022年成为了全球最强AI模型之一 2 chatG
  • Chrome 谷歌浏览器账户无法登录、注册

    Chrome 谷歌浏览器账户无法登录 注册 背景 步骤 1 2 3 4 5 6 亲测有效 但这只是其中一种 背景 通过某些方法 登录了Google浏览器 注册Google账号时发现 点击登录或者注册后 网页没有任何响应 通过查询网上资料后
  • C语言初学:比较两个数的大小

    比较两数大小 1 利用if else输出较大值 include
  • Java设计模式-解释器模式

    解释器模式 在软件开发中 会遇到有些问题多次重复出现 而且有一定的相似性和规律性 如果将它们归纳成一种简单的语言 那么这些问题实例将是该语言的一些句子 这样就可以用 编译原理 中的解释器模式来实现了 虽然使用解释器模式的实例不是很多 但对于
  • element 表格嵌套 switch 踩坑

    因为项目需求 需要在表格中插入开关 当前的组件并不支持 手写了个简易demo 记录一下踩坑历程
  • 网站架构演变过程之微服务概念描述

    传统架构 传统的SSH架构 分为三层架构 web控制层 业务逻辑层 数据库访问层 传统架构也就是单点应用 就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构 业务没有进行拆分 都写同一个项目工程里面 一般是适合于个人或者是小
  • 企业使用VMware vSphere进行服务器虚拟化的经验分享

    企业使用VMware vSphere进行服务器虚拟化的经验分享 对于很多中小企业来说 虚拟化已经成为节省IT开支的一种重要手段 下面就根据公司Vmware虚拟化产品部署案例 同大家来详细分享一下在使用vSphere产品组建虚拟化数据中心的一
  • python中列表数据类型_python基础数据类型一(列表)

    列表 表是python的基础数据类型之一 其他编程语言也有类似的数据类型 比如JS中的数 组 java中的数组等等 它是以 括起来 每个元素用 隔开而且可以存放各种数据类型 列表是python中的基础数据类型之一 其他语言中也有类似于列表的
  • Python的PyYAML模块详解

    文章目录 简介 安装 简单安装 从源码安装 最常被问到的问题 使用详解 加载YAML 转储YAML 构造 表示和解析 YAML语法 文档 块序列 块映射 流集合 标量 别名 标签 YAML标签和Python3 对象 字符串转换 名称和模块
  • LaTeX Error: File `tabu.sty‘ not found.

    虽然Miktex可以自动下载和安装没有的库 但有些时候也有可能会直接报错 LaTeX Error File tabu sty not found 解决方法就是打开控制台 然后手动下载
  • linux切换用户su自动输入密码,Linux切换用户出现【su:命令鉴定故障】问题&修改的密码位数必须大于8位的问题...

    一 切换到普通用户出现 su 命令鉴定故障 创建用户设置好密码后 从root用户进入普通用户是不需要输入密码的 但是我切换到另一个普通用户 进行普通用户之间的切换的时候 出现了 su 命令鉴定故障 最开始我以为是我密码错误 后来改 也怎么都
  • 互联网小拼,这一生的故事,你要看看吗

    前言 谁也不知道 今天竟然是我的最后一天加班 我叫小拼 我来自农村 一个国家级贫困县 原以为会在老家种田一辈子 谁曾想 考上了一所大学 学了计算机专业改变了我的一生 大学毕业以前都没什么好说的 九年义务教育 再加高中三年 大学四年 毕业后
  • 引领高并发直播场景进入毫秒时代,阿里云发布超低延时直播服务

    近日 阿里云上线超低延时直播服务RTS Real time Streaming 该服务在视频直播产品的基础上 进行全链路延时监控 传输协议改造等底层技术优化 支持千万级并发场景下的毫秒级延迟直播能力 保障低延时 低卡顿 高清流畅的极致直播观
  • C++文件读取

    简介 最近在复习C 在写一个停车场管理系统项目的时候突然遇到了关于文件的处理 感觉忘记的差不多了 重新复习了一下 也顺便写一下笔记 当然在一个文章中有很多细节都没有进行深入的研究 只是知道一些基本的用法 主要感觉在学完数据库后再用文件系统进