C++初学者指南-2.输入和输出---文件输入和输出

C++初学者指南-2.输入和输出—文件输入和输出

文章目录

  • C++初学者指南-2.输入和输出---文件输入和输出
    • 1.写文本文件
    • 2.读文本文件
    • 3.打开关闭文件
    • 4.文件打开的模式

1.写文本文件

使用: std::ofstream(输出文件流)

#include <fstream>  // 文件流头文件
int main () {std::ofstream os{"squares.txt"};  // 打开文件// 如果文件流没问题表示可以写入文件if (os.good()) {for (int x = 1; x <= 6; ++x) { // 写入:x值空格x二次方的值和换行符os << x << ' ' << (x*x) << '\n';}}
}  // 文件会自动关闭

上面代码:

  • 创建一个名为squares.txt的新文件
  • 如果文件已存在则覆盖!
  • 每行写 2 个数字,用空格分隔。
squares.txt
1·1\n
2·4\n
3·9\n
4·16\n
5·25\n
6·36\n

2.读文本文件

使用: std::ifstream(输入文件流)

#include <iostream>
#include <fstream>  // 文件流头文件
int main () {std::ifstream is{"squares.txt"};  // 打开文件// 如果文件流没问题则可以读取if ( is.good() ) {double x, y;// 只要有任何两个可读的数值,就读取出来while( is >> x >> y ) {// 打印 x,y这对值cout << x << "² = " << y << "\n"; }}
}  // 文件自动关闭
squares.txt
1·1\n
2·4\n
3·9\n
4·16\n
5·25\n
6·36\n

输出:

1² = 1
2² = 4
3² = 9
4² = 16
5² = 25
6² = 36

3.打开关闭文件

在创建流对象和析构流对象时

int main (int const argc, char const*const* argv) {if (argc > 1) {// 使用C风格字符串作为文件名std::ofstream os { argv[1] };} // 自动关闭else {// 使用std::string(C++11)std::string fn = "test.txt";std::ofstream os { fn };} // 自动关闭
}

使用open和close

void bar () {std::ofstream os;                 os.open("squares.txt");     …os.close();  // open another file:os.open("test.txt");  …os.close();  
}

4.文件打开的模式

默认

ifstream is {"in.txt", ios::in};
ofstream os {"out.txt", ios::out};   (覆盖现有文件)

追加到现有文件

ofstream os {"log.txt", ios::app};

二进制方式

ifstream is {"in.jpg", ios::binary};
ofstream os {"out.jpg", ios::binary};
// 我们以后会学到这一切是什么意思的...
std::uint64_t i = 0;
// 读取二进制数据
is.read(reinterpret_cast<char*>(&i), sizeof(i));
// 写入二进制数据
os.write(reinterpret_cast<char const*>(&i), sizeof(i));

运行示例程序

#include <iostream>
#include <fstream>
#include <cstdint>int main (int argc, char* argv[]) {if (argc < 3) {std::cerr << "usage: " << argv[0] << " <integer> <filename>\n";return 0;}std::string filename {argv[2]};{   // write binarystd::uint64_t i = atoi(argv[1]);std::cout << "writing: " << i << " to " << filename << "\n";std::ofstream os {filename, std::ios::binary};if (os.good()) {os.write(reinterpret_cast<char const*>(&i), sizeof(i));}}{   // read binarystd::uint64_t i = 0;std::ifstream is {filename, std::ios::binary};if (is.good()) {is.read(reinterpret_cast<char*>(&i), sizeof(i));std::cout << "read as: " << i << "\n";}}
}

运行上面代码

附上原文链接
如果文章对您有用,请随手点个赞,谢谢!^_^
在这里插入图片描述

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

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

相关文章

Scala 中的匿名函数

Scala 中的匿名函数 Scala 中的匿名函数是指没有指定函数名称的函数&#xff0c;通常用于简单的功能实现或者作为参数传递给其他函数。使用匿名函数可以简洁地表达代码逻辑&#xff0c;提高代码的可读性和简洁性。 在 Scala 中&#xff0c;可以使用 > 符号来定义匿名函数。下…

面试题--Zookeeper

1. Zookeeper 是什么(了解) Zookeeper 是一个 分布式协调服务 的开源框架, 主要用来解决分布式集群中应用系统 的一致性问题, 例如怎样避免同时操作同一数据造成脏读的问题. ZooKeeper 本质上是 一个分布式的小文件存储系统 . 提供基于类似于文件系统的目录 树方式的数据存…

React@16.x(39)路由v5.x(4)常见应用场景(1)- 受保护的页面

目录 1&#xff0c;实现2&#xff0c;知识点1&#xff0c;Route.children 和 Route.render2&#xff0c;保存跳转 login 之前的路由3&#xff0c;解构参数 现在有3个页面 Home 页面Login 页面Personal 页面&#xff08;受保护&#xff0c;未登录无法进入&#xff09; 1&#…

几种常见的方式可以引入CSS文件

1. <link> 标签 使用 <link> 标签将外部样式表引入HTML文档。 <head><link rel"stylesheet" href"styles.css"> </head>2. <style> 标签 在HTML文档中使用 <style> 标签定义内部样式。 <head><sty…

YOLOv8关键点pose训练自己的数据集

这里写自定义目录标题 YOLOv8关键点pose训练自己的数据集一、项目代码下载二、制作自己的关键点pose数据集2.1 标注(非常重要)2.1.1 标注软件2.1.2 标注注意事项a.多类别检测框b.单类别检测框2.2 格式转换(非常重要)2.3 数据集划分三、YOLOv8-pose训练关键点数据集3.1 训练…

通过frp实现内外网映射

frp介绍和使用方法可以参考官网:安装 | frp 1、准备两台服务器&#xff0c;一台内网服务器A&#xff0c;一台有公网ip的外网服务器B(47.12.13.15) 2、去官方仓库下载frp安装包&#xff1a;Releases fatedier/frp GitHub 下载包根据自己服务系统选择 ​ 3、先在外网服务器…

GB 16807-2009 防火膨胀密封件

防火膨胀密封件是指在火灾时遇火或高温作用能够膨胀&#xff0c;且能辅助建筑构配件使之具有隔火、隔烟、隔热等防火密封性能的产品。 GB 16807-2009 防火膨胀密封件测试项目 测试要求 测试标准 外观 GB 16807 尺寸允许偏差 GB 16807 膨胀性能 GB 16807 产烟毒性 GB …

《昇思25天学习打卡营第1天|onereal》

昇思25天学习打卡营第1天;有点一头雾水的感觉&#xff0c;说是要在jupyter中签到打卡&#xff0c;是不是就是复制粘贴。我以为是要在终端机器中运行代码呢。 如果只是粘贴代码&#xff0c;那未免太简单了。 我还是想运行这个算力机器&#xff0c;但是他们说每次只能2小时。太…

AI播客下载:Eye on AI(AI深度洞察)

"Eye on A.I." 是一档双周播客节目&#xff0c;由长期担任《纽约时报》记者的 Craig S. Smith 主持。在每一集中&#xff0c;Craig 都会与在人工智能领域产生影响的人们交谈。该播客的目的是将渐进的进步置于更广阔的背景中&#xff0c;并考虑发展中的技术的全球影响…

pp 学习一 生产模块主数据

生产成本&#xff1a;原材料是什么&#xff0c;价格多少&#xff0c;人工耗费时间&#xff0c;以及其他的费用 离散制造&#xff1a;有生产订单。工序是分开的&#xff08;可以停&#xff09; 重复制造&#xff1a;没有生产订单&#xff08;可能有客户下达的任务单或者计划订…

一分钟彻底掌握Java多线程生产者与消费者模型

代码 package com.example.KFC; public class Cooker extends Thread { public void run() { while (true) { synchronized (Desk.lock) { if (Desk.maxCount 0) { break; } else { if (!Desk.flag) { System.out.println("Cooker makes a hamburger"); …

unity中使用commandbuffer将自定义画面渲染到主相机上

CommandBuffer 保存渲染命令列表&#xff08;例如设置渲染目标或绘制给定网格&#xff09;。您可以指示 Unity 在内置渲染管线中的各个点安排和执行这些命令&#xff0c;因此&#xff0c;您可以自定义和扩展 Unity 的渲染功能。 这句话意味着你可以通过command buffer让相机渲…

计算机基础知识——面向对象:封装+继承+多态整理

面向对象三大特性&#xff1a;封装、继承、多态。 1.封装 将一系列相关事物的共同的属性和行为提取出来&#xff0c;放到一个类中&#xff0c;同时隐藏对象的属性和实现细节&#xff0c;仅对外提供公共的访问方式。 【JavaBean类就可以看作是封装的完美案例。】 setter和get…

001 线性查找

文章目录 迭代器主程序 迭代器 -- 定义一个名为 linearSearch 的函数&#xff0c;它接受两个参数&#xff1a;data&#xff08;一个数组&#xff09;和 target&#xff08;一个目标值&#xff09; function linearSearch(data, target) -- 使用 for 循环遍历数组 data&…

云动态摘要 2024-06-25

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新产品更新 Web应用防火墙 - 验证码支持微信小程序接入 阿里云 2024-06-25 支持客户从微信小程序场景下接入&#xff0c;提供人机识别的安全防护。 工业数字模型驱动引擎 - iDME控制台换新升级 华为云…

Hadoop 面试题(九)

1. 简述下面关于Hadoop系统中使用CombineFileInputFormat解决小文件问题的描述错误的是&#xff08;&#xff09; &#xff1f; A&#xff1a;CombineFileInputFormat是使用Hadoop API(抽象类CombineFileInputFormat)来解决小文件的问题 B&#xff1a;抽象类CombineFileInputF…

[20] Opencv_CUDA应用之 关键点检测器和描述符

Opencv_CUDA应用之 关键点检测器和描述符 本节中会介绍找到局部特征的各种方法&#xff0c;也被称为关键点检测器关键点(key-point)是表征图像的特征点&#xff0c;可用于准确定义对象 1. 加速段测试特征功能检测器 FAST算法用于检测角点作为图像的关键点&#xff0c;通过对…

轻松掌握:工科生如何高效阅读国际期刊和撰写论文(上)

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三连支…

C++使用Spdlog异步日志

Head-only库 #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_TRACE //为了使用源码函数行号等符号用的 #include "spdlog/spdlog.h" #include "spdlog/async.h" #include "spdlog/sinks/stdout_color_sinks.h" #include "spdlog/sinks/rotatin…

七天速通javaSE:第三天 程序控制结构:练习题

文章目录 前言一、基础1.计算从0~100之间奇数之和和偶数之和2. 用for循环输出0~1000之间能被5整除的数&#xff0c;每行输出三个 二、进阶1. 九九乘法表2.等边三角形 前言 本文主要讲解三种基本程序控制结构的练习题&#xff0c;以期熟练掌握顺序、选择、循环三种基本结构 一、…