C++ (六) 输入输出和文件操作:C++的魔法书卷

输入输出和文件操作:C++的魔法书卷

在C++的魔法世界中,输入输出(I/O)和文件操作就像是古老的书卷,记录着信息的流动和存储。这些书卷不仅能够让你与用户进行交流,还能让你在程序之间传递信息。现在,让我们打开这些神秘的书卷,学习如何使用它们来增强我们的魔法力量。

5. 输入输出和文件操作:掌握信息的魔法

5.1 标准输入输出流:与用户对话的魔镜

在C++中,标准输入输出流(cincoutcerr)是与用户进行交互的直接方式。它们就像是一面魔镜,让你能够看到用户的想法(输入)并回应他们(输出)。

5.1.1 cout:向用户展示魔法

cout是标准输出流,用于向用户展示信息。

#include <iostream>int main() {std::cout << "欢迎来到C++的魔法世界!" << std::endl;int number;std::cout << "请输入一个数字:";std::cin >> number; // 从魔镜中读取用户的想法std::cout << "你输入的数字是:" << number << std::endl;return 0;
}

在这个例子中,我们使用cout来向用户展示信息,并使用cin来读取用户输入的数字。

5.1.2 cerr:警告和错误

cerr是标准错误流,用于向用户显示错误和警告信息。

#include <iostream>int main() {std::cout << "请输入一个数字:";int number;while (!(std::cin >> number)) { // 检查输入是否为数字std::cerr << "错误:请输入有效的数字。" << std::endl;std::cin.clear(); // 清除错误标志std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略错误输入}std::cout << "你输入的数字是:" << number << std::endl;return 0;
}

在这个例子中,如果用户输入的不是数字,我们使用cerr来显示错误信息。

5.2 文件流:在魔法书卷中记录知识

文件流是C++中用于读写文件的工具。它们允许你将信息保存到磁盘上,或从磁盘上读取信息。

5.2.1 fstream:读写文件的魔杖

fstream类是用于文件输入输出的魔杖。

#include <iostream>
#include <fstream>
#include <string>int main() {std::fstream file("magic_log.txt", std::ios::in | std::ios::out | std::ios::app); // 打开文件if (file.is_open()) {std::string spell;while (getline(file, spell)) { // 从文件中读取信息std::cout << spell << std::endl;}file.seekp(0, std::ios::end); // 移动到文件末尾file << "新的魔法咒语:Abracadabra" << std::endl; // 向文件中写入信息file.close(); // 关闭文件} else {std::cerr << "无法打开魔法书卷!" << std::endl;}return 0;
}

在这个例子中,我们使用fstream来打开一个名为magic_log.txt的文件,读取其中的内容,并添加新的信息。

5.2.2 ifstreamofstream:专业的魔法书卷守卫

ifstreamofstream是专门用于文件输入和输出的守卫。

#include <iostream>
#include <fstream>
#include <vector>int main() {std::ifstream inputFile("magic_ingredients.txt"); // 用于读取的守卫if (inputFile.is_open()) {std::vector<std::string> ingredients;std::string ingredient;while (getline(inputFile, ingredient)) {ingredients.push_back(ingredient);}inputFile.close();} else {std::cerr << "无法打开魔法成分书卷!" << std::endl;return 1;}std::ofstream outputFile("magic_recipes.txt", std::ios::app); // 用于写入的守卫if (outputFile.is_open()) {for (const auto& ingredient : ingredients) {outputFile << ingredient << std::endl;}outputFile.close();} else {std::cerr << "无法打开魔法食谱书卷!" << std::endl;return 1;}return 0;
}

在这个例子中,我们使用ifstream来读取一个包含魔法成分的文件,并使用ofstream将这些成分写入另一个文件。

结语

输入输出和文件操作是C++中用于信息交换的基本工具。通过标准输入输出流,你可以与用户进行交互;通过文件流,你可以在程序和永久存储之间传递信息。这些工具就像是魔法书卷,记录着知识的流动和保存。

现在,拿起你的魔杖(键盘),继续在C++的魔法世界中书写和阅读吧!愿你的信息流动如同魔法一般流畅,愿你在编程的征途上充满交流和记录!

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

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

相关文章

【高级IO】IO多路转接之select

select函数 我们知道IO 等待 拷贝&#xff0c;系统提供select函数来实现多路复用输入/输出模型&#xff1b;select系统调用是用来让我们的程序监视多个文件描述符的状态变化的&#xff1b;程序会停在select这里等待&#xff0c;直到被监视的文件描述符有一个或多个发生了状态…

植物健康,Spring Boot来助力

3系统分析 3.1可行性分析 通过对本植物健康系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本植物健康系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

钉钉录播抓取视频

爬取钉钉视频 免责声明 此脚本仅供学习参考&#xff0c;切勿违法使用下载他人资源进行售卖&#xff0c;本人不但任何责任! 仓库地址: GItee 源码仓库 执行顺序 poxyM3u8开启代理getM3u8url用于获取m3u8文件userAgent随机请求头downVideo|downVideoThreadTqdm单线程下载和…

【纯血鸿蒙】HarmonyOS和OpenHarmony 的区别

一、开源鸿蒙&#xff08;Open Harmony&#xff09; 鸿蒙系统愿来的设计初衷&#xff0c;就是让所有设备都可以运行一个系统&#xff0c;但是每个设备的运算能力和功能都不同&#xff0c;所以内核的设计上&#xff0c;采用了微内核的设计&#xff0c;除了最基础的功能放在内核…

logback 如何将日志输出到文件

如何作 将日志输出到文件需要使用 RollingFileAppender&#xff0c;该 Appender 必须定义 rollingPolicy &#xff0c;另外 rollingPollicy 下必须定义 fileNamePattern 和 encoder <appender name"fileAppender" class"ch.qos.logback.core.rolling.Rollin…

LLM | 论文精读 | 基于大型语言模型的自主代理综述

论文标题&#xff1a;A Survey on Large Language Model based Autonomous Agents 作者&#xff1a;Lei Wang, Chen Ma, Xueyang Feng, 等 期刊&#xff1a;Frontiers of Computer Science, 2024 DOI&#xff1a;10.1007/s11704-024-40231-1 一、引言 自主代理&#xff08;…

企业自建邮件系统选U-Mail ,功能强大、安全稳定

在现代企业运营中&#xff0c;电子邮件扮演着至关重要的角色&#xff0c;随着企业规模的增长和业务的多样化&#xff0c;传统的租用第三方企业邮箱服务逐渐显现出其局限性。例如&#xff0c;存储空间受限、数据安全风险、缺乏灵活的管理和备份功能&#xff0c;以及无法与其他企…

C++从入门到起飞之——红黑树 全方位剖析!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1. 红⿊树的概念 2. 红⿊树的实现 2.1 构建整体框架 2.2 红黑树的插入 2.3 红黑树的验证 2.4 红黑树…

数据库、数据仓库、数据湖和数据中台有什么区别

很多企业在面对数据存储和管理时不知道如何选择合适的方式&#xff0c;数据库、数据仓库、数据湖和数据中台&#xff0c;这些方式都是什么&#xff1f;有什么样的区别&#xff1f;企业根据其业务类型该选择哪一种&#xff1f;本文就针对这些问题&#xff0c;来探讨下这些方式都…

ASP.NET Core 8.0 中使用 Hangfire 调度 API

在这篇博文中&#xff0c;我们将引导您完成将 Hangfire 集成到 ASP.NET Core NET Core 项目中以安排 API 每天运行的步骤。Hangfire 是一个功能强大的库&#xff0c;可简化 .NET 应用程序中的后台作业处理&#xff0c;使其成为调度任务的绝佳选择。继续阅读以了解如何设置 Hang…

山西农业大学20241025

06-VUE 一. 生命周期1. 概念2. 生命周期的钩子函数 二. 工程化开发和脚手架1. 开发vue的两种方式2. 脚手架 Vue CLI3. 使用步骤4 . 项目目录介绍4.1 项目目录4.2 总结 一. 生命周期 1. 概念 VUE生命周期: 就是vue实例从创建到销毁的整个 生命周期经历了四个阶段: ①创建 ②挂载…

Clickhouse 笔记(一) 单机版安装并将clickhouse-server定义成服务

ClickHouse 是一个高性能的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;主要用于在线分析处理&#xff08;OLAP&#xff09;场景。它由俄罗斯搜索引擎公司 Yandex 开发&#xff0c;并在 2016 年开源。ClickHouse 以其卓越的查询性能和灵活的扩展性而闻名&#…

2-133 基于matlab的粒子群算法PSO优化BP神经网络

基于matlab的粒子群算法PSO优化BP神经网络&#xff0c;BP神经网络算法采用梯度下降算法&#xff0c;以输出误差平方最小为目标&#xff0c;采用误差反向传播&#xff0c;训练网络节点权值和偏置值&#xff0c;得到训练模型。BP神经网络的结构(层数、每层节点个数)较复杂时&…

【linux网络编程】| 网络基础 | 解析IP与Mac地址的区别

前言&#xff1a;本节内容讲解一些网络基础相关的知识点&#xff0c; 不涉及网络代码&#xff01;同样的本节内容是作为前一篇的补充知识点&#xff0c; 前一篇文章地址&#xff1a;【linux网络编程】 | 网络基础Ⅰ| 认识网络-CSDN博客&#xff0c;本篇文章内容较少&#xff0c…

AnaTraf | 全面掌握网络健康状态:全流量的分布式网络性能监测系统

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具AnaTraf网络流量分析仪是一款基于全流量&#xff0c;能够实时监控网络流量和历史流量回溯分析的网络性能监控与诊断系统&#xff08;NPMD&#xff09;。通过对网络各个关键节点的监测&#xff0c;收集网络性能…

内置数据类型、变量名、字符串、数字及其运算、数字的处理、类型转换

内置数据类型 python中的内置数据类型包括&#xff1a;整数、浮点数、布尔类型&#xff08;以大写字母开头&#xff09;、字符串 变量名 命名变量要见名知意&#xff0c;确保变量名称具有描述性和意义&#xff0c;这样可以使得代码更容易维护&#xff0c;使用_可以使得变量名…

2024.7最新子比主题zibll7.9.2开心版源码+授权教程

授权教程&#xff1a; 1.进入宝塔搭建一个站点 绑定 api.zibll.com 域名 并上传 index.php 文件 2.设置伪静态 3.开启SSL证书&#xff0c;找一个能用的域名证书&#xff0c;将密钥(KEY)和证书(PEM格式)复制进去即可 4.在宝塔文件地址栏中输入 /etc 找到 hosts文件并打开&a…

[Linux][进程间通信] 命名管道

命名管道是一种进程间通信的方式,底层原理与匿名管道极为相似,本质是通过在磁盘上新建一个特殊的文件,然后通过这个文件来进行通信 指令: mkfifo [文件名/路径] 该指令用于创建一个命名管道,可以看到文件的类型是p p 类型 命名管道文件 p文件大小恒为0 可通过echo和cat向其…

JavaEE----多线程(四)----阻塞队列的介绍和初步实现

文章目录 1.阻塞队列1.1作用一&#xff1a;解耦合1.2作用二&#xff1a;削峰填谷1.3系统里面的阻塞队列的使用1.4实现普通队列1.5在普通队列的基础上面实现阻塞队列1.6设计优化1.7实现初步的生产者消费者模型 1.阻塞队列 阻塞队列的最大意义&#xff1a;就是实现“生产者消费者…

SQL 干货 | SQL 半连接

大多数数据库开发人员和管理员都熟悉标准的内、外、左和右连接类型。虽然可以使用 ANSI SQL 编写这些连接类型&#xff0c;但还有一些连接类型是基于关系代数运算符的&#xff0c;在 SQL 中没有语法表示。今天我们将学习一种这样的连接类型&#xff1a;半连接&#xff08;Semi …