「C/C++」C++标准库 之 #include<iostream> 标准输入输出

在这里插入图片描述

✨博客主页
何曾参静谧的博客
📌文章专栏
「C/C++」C/C++程序设计
📚全部专栏
「VS」Visual Studio「C/C++」C/C++程序设计「UG/NX」BlockUI集合
「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发
「QT」QT5程序设计「File」数据文件格式「PK」Parasolid函数说明

目录

    • C++中的iostream:标准输入输出流库详解
      • 引言
      • 一、iostream库概述
      • 二、基本输入输出操作
      • 三、格式化输入输出
      • 四、错误处理
      • 五、结论

C++中的iostream:标准输入输出流库详解

引言

在C++编程中,iostream库是处理标准输入输出操作的核心组件。它提供了一套丰富的接口,使得开发者能够方便地在控制台程序中进行数据的读取和写入。本文将深入探讨C++中的iostream库,包括其基本概念、常用功能、以及实际应用场景,旨在帮助读者更好地理解和利用这一强大的库。

一、iostream库概述

iostream是C++标准库中的一个头文件,它包含了处理输入输出操作的类模板和函数。这些类模板和函数被封装在std命名空间中,因此在使用时需要包含头文件#include <iostream>,并可能需要使用std::前缀来访问它们。

iostream库主要提供了三个基本流对象:cincoutcerr,以及它们的宽字符版本wcinwcoutwcerr。这些对象分别用于标准输入、标准输出和标准错误输出。

  • cin:用于从标准输入(通常是键盘)读取数据。
  • cout:用于向标准输出(通常是屏幕)写入数据。
  • cerr:用于向标准错误输出写入数据,通常用于输出错误信息。与cout不同,cerr不经过缓冲区,因此输出会立即显示。

二、基本输入输出操作

  1. 输出操作

使用cout可以方便地向标准输出写入数据。cout与插入运算符<<配合使用,可以将各种类型的数据(如整数、浮点数、字符、字符串等)输出到屏幕上。

#include <iostream>int main() {int a = 5;double b = 3.14;char c = 'A';std::string s = "Hello, World!";std::cout << a << std::endl;std::cout << b << std::endl;std::cout << c << std::endl;std::cout << s << std::endl;return 0;
}
  1. 输入操作

使用cin可以从标准输入读取数据。cin与提取运算符>>配合使用,可以将输入的数据存储到指定的变量中。

#include <iostream>int main() {int a;double b;char c;std::string s;std::cout << "Enter an integer: ";std::cin >> a;std::cout << "Enter a double: ";std::cin >> b;std::cout << "Enter a character: ";std::cin >> c;std::cout << "Enter a string: ";std::getline(std::cin, s); // 注意:对于字符串,通常使用std::getline来读取整行输入std::cout << "You entered: " << a << ", " << b << ", " << c << ", " << s << std::endl;return 0;
}

三、格式化输入输出

iostream库还提供了一些操纵符(manipulators)来格式化输出。这些操纵符可以改变输出的格式,如设置字段宽度、填充字符、精度等。

  1. 设置字段宽度和填充字符

使用std::setw可以设置输出的字段宽度,使用std::setfill可以设置填充字符。

#include <iostream>
#include <iomanip> // 需要包含这个头文件来使用setw和setfillint main() {int a = 42;std::cout << std::setw(10) << a << std::endl; // 输出宽度为10,默认右对齐std::cout << std::setw(10) << std::setfill('*') << a << std::endl; // 输出宽度为10,填充字符为'*'return 0;
}
  1. 设置浮点数的精度

使用std::setprecision可以设置浮点数的输出精度。

#include <iostream>
#include <iomanip>int main() {double b = 3.141592653589793;std::cout << std::setprecision(5) << b << std::endl; // 输出精度为5std::cout << std::fixed << std::setprecision(2) << b << std::endl; // 使用fixed模式,输出精度为2的小数点表示return 0;
}

四、错误处理

在使用cin进行输入时,可能会遇到输入错误或输入类型不匹配的情况。iostream库提供了一些机制来处理这些错误。

  1. 检测输入错误

可以使用cin.fail()来检测输入是否失败,使用cin.clear()来清除错误状态,使用cin.ignore()来忽略输入缓冲区中的错误字符。

#include <iostream>
#include <limits>int main() {int a;std::cout << "Enter an integer: ";std::cin >> a;if (std::cin.fail()) {std::cerr << "Input error! Please enter a valid integer." << std::endl;std::cin.clear(); // 清除错误状态std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略错误字符} else {std::cout << "You entered: " << a << std::endl;}return 0;
}

五、结论

iostream库是C++标准库中处理标准输入输出操作的核心组件。它提供了丰富的接口和工具,使得开发者能够方便地在控制台程序中进行数据的读取和写入。通过掌握iostream库的基本概念和常用功能,开发者可以编写出更加高效、健壮和易于维护的C++程序。同时,了解如何格式化输出和处理输入错误也是编写高质量C++程序的重要一环。


在这里插入图片描述

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

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

相关文章

智能合约在供应链金融中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 智能合约在供应链金融中的应用 引言 智能合约概述 定义与原理 发展…

设计模式之责任链模式(Chain Of Responsibility)

一、责任链模式介绍 1、责任链模式介绍 职责链模式(chain of responsibility pattern) 定义: 避免将一个请求的发送者与接收者耦合在 一起&#xff0c;让多个对象都有机会处理请求。将接收请求的对象连接成一条链&#xff0c;并且沿着这条链 传递请求&#xff0c;直到有一个对…

C语言中的 printf( ) 与 scanf( )

时隔多日&#xff0c;小编我又回来咯小编相信之前的博客能够给大家带来不少的收获。在我们之前的文章中&#xff0c;许多代码块的例子都用到了printf( ) 与 scanf( )这两个函数&#xff0c;大家都知道他们需要声明头文件之后才能使用&#xff0c;那这两个函数是什么呢&#xff…

数字乡村解决方案-1

1. 政策背景与新时代党建 党的十九大报告提出新时代党建总要求&#xff0c;强调乡村治理在国家治理体系中的重要性&#xff0c;并作为实现乡村振兴战略的基石。提出按照产业兴旺、生态宜居、乡风文明、治理有效、生活富裕的总要求&#xff0c;推进乡村治理体系和治理能力现代化…

栈和队列相关题 , 用队列实现栈, 用栈实现队列 ,设计循环队列 C/C++双版本

文章目录 1.用队列实现栈2.用栈实现队列3. 设计循环队列 1.用队列实现栈 225. 用队列实现栈 思路&#xff1a; 使用两个队列&#xff0c;始终保持一个队列为空。 当我们需要进行压栈操作时&#xff0c;将数据压入不为空的队列中&#xff08;若两个都为空&#xff0c;则随便压…

零基础入门进程间通信:task 1(匿名管道与vscode使用)

目录 引言 VSCODE使用 进程间通信正题 基础背景 进程间通信分类 匿名管道 理解匿名管道 代码实现 匿名管道的特性 管道的四种情况 应用场景 引言 在当今的计算机技术领域&#xff0c;操作系统作为计算机系统的核心组件&#xff0c;承担着资源管理、任务调度和进程管…

#渗透测试#SRC漏洞挖掘#Python自动化脚本的编写04之通过面向对象编程学生管理信息系统01

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

【销帮帮-注册_登录安全分析报告-试用页面存在安全隐患】

联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨…

微信小程序——01开发前的准备和开发工具

文章目录 一、开发前的准备1注册小程序账号2安装开发者工具 一、开发前的准备 开发前需要进行以下准备&#xff1a; 1 注册小程序账号2激活邮箱3 信息登记4 登录小程序管理后台5完善小程序信息6绑定开发者 1注册小程序账号 第1步&#xff1a;首先打开“微信公众平台” https:…

文心一言 VS 讯飞星火 VS chatgpt (388)-- 算法导论24.5 8题

八、设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图&#xff0c;且包含一个可以从源结点 s s s 到达的权重为负值的环路。请说明如何构造一个 G G G 的边的松弛操作的无限序列&#xff0c;使得每一步松弛操作都能对某一个最短路径估计值进行更新。如果要写代码&#x…

鸿蒙UI开发——自定义UI绘制帧率

1、概 述 随着设备屏幕的不断演进&#xff0c;当前主流设备采用LTPO屏幕&#xff08;可变刷新率屏幕&#xff09;&#xff0c;此类屏幕支持在多个档位之间切换屏幕帧率。 对于快速变化的内容&#xff0c;如射击游戏&#xff0c;交互动画等&#xff0c;显示帧率越高&#xff0…

计算机毕业设计 | SpringBoot慈善公益平台 爱心互助活动发布管理系统(附源码)

1&#xff0c;项目介绍 爱慈善公益平台&#xff08;love-charity&#xff09;是一个基于 SpringBoot 开发的标准 Java Web 项目。整体页面非常的简约大气&#xff0c;项目的完整度较高&#xff0c;是一个偏向公益论坛的系统。非常适合刚刚接触学习 SpringBoot 的技术小白学习&…

在 AMD GPU 上使用 AI2 的 OLMo 模型进行推理

Inferencing with AI2’s OLMo model on AMD GPU — ROCm Blogs 2024 年 4 月 17 日&#xff0c;作者&#xff1a;Douglas Jia. 在这篇博客中&#xff0c;我们将向您展示如何在 AMD GPU 上使用 AI2 的 OLMo 模型生成文本。 简介 由艾伦人工智能研究所&#xff08;Allen Instit…

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置...-CSDN博客 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明-CSDN博客 工作…

C++数学

前言 C算法与数据结构 打开打包代码的方法兼述单元测试 数论&#xff1a;质数、最大公约数、菲蜀定理 组合数学汇总 计算几何 博弈论 曼哈顿距离与切比雪夫距离 红线是哈曼顿距离&#xff0c;绿线是切比雪夫距离。 二维曼哈顿距离转切比雪夫距离 曼哈顿距离&#xff1a;|…

前深度学习时代-经典的推荐算法

参考自《深度学习推荐系统》—— 王喆&#xff0c;用于学习记录。 1.协同过滤 “协同过滤”就是协同大家的反馈、评价和意见一起对海量的信息进行过滤&#xff0c;从中筛选出目标用户可能感兴趣的信息的推荐过程。 基于用户相似度进行推荐的协同过滤算法 UserCF 用户相似度…

10 Oracle Data Guard:打造高可用性与灾难恢复解决方案,确保业务连续性

文章目录 10 Oracle Data Guard&#xff1a;打造高可用性与灾难恢复解决方案&#xff0c;确保业务连续性一、Data Guard基本概念二、Data Guard技术架构三、配置Oracle Data Guard的步骤3.1 准备主数据库和备用数据库3.2 配置Redo日志传输服务3.3 配置Data Guard Broker3.4 启动…

计算机网络综合题

IP数据报的划分 CRC差错检测 冗余码的计算 因此&#xff0c;余数是1110&#xff0c;传输的数为11010110111110。在传输过程中最后两位变成o&#xff0c;接收端能够发现&#xff0c;因为11010110111110除以10011余数不为0。 子网划分 暴力求解法 &#xff08;定长子网划分大量…

计算机课程管理:Spring Boot与工程认证的协同

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Java | Leetcode Java题解之第557题反转字符串中的单词III

题目&#xff1a; 题解&#xff1a; class Solution {public String reverseWords(String s) {StringBuffer ret new StringBuffer();int length s.length();int i 0;while (i < length) {int start i;while (i < length && s.charAt(i) ! ) {i;}for (int …