C++入门——输入输出、缺省参数
C++入门——输入输出、缺省参数
一、C++标准库——命名空间 std
C++标准库std是一个命名空间,全称为"standard",其中包括标准模板库(STL),输入输出系统,文件系统库,智能指针与内存管理,字符串与文本处理等等,我们以输入输出流和标准模板库为例,简单地认识一下C++标准库里面有哪些内容:
1.输入输出系统
(1)流(Streams)
- 基础流:
iostream(cin,cout,cerr) - 文件流:
fstream,ifstream,ofstream - 字符串流:
stringstream,用于内存数据格式化
(2)格式化工具
std::format(C++20):类型安全字符串格式化- 本地化支持:
locale与wcout(宽字符输出)
2.标准模板库(STL)
(1) 容器(Containers)
- 序列容器:
vector,list,deque,array(C++11) - 关联容器:
map,set,unordered_map(C++11),unordered_set(C++11) - 适配器:
stack,queue,priority_queue
(2) 算法(Algorithms)
- 非修改序列操作:
find,count,for_each - 修改序列操作:
copy,transform,replace - 排序与搜索:
sort,binary_search,lower_bound
(3) 迭代器(Iterators)
- 五类迭代器:输入/输出、前向/双向/随机访问
- 范围遍历:C++20引入
ranges::简化迭代操作
在本期内容中,我们只需要认识一下输入输出流中iostream的cin,cout,完成一些简单的输入输出操作即可。
二、输入输出——cin / cout
我们先来看这样一段代码:

1.#include < iostream >
C++的输入输出需要包含头文件< iostream > ,并且展开命名空间std(C++标准库),刚才上面的内容中,我们已经介绍了cin/cout是包含在头文件< iostream >中,而< iostream >又包含在命名空间std中,在上期内容的讲解中,我们知道,想要使用命名空间里的内容,就需要展开命名空间或者指定访问命名空间。在这里,由于是平时学习的代码,内容不是很多,所以我们就直接展开命名空间,写起来比较方便,如果不展开命名空间,输入的内容就要就相对多一些,如图所示:
- 使用域作用限定符指定访问命名空间中的内容:

- 使用using将命名空间的cout、endl成员引入:

我们来看下面一段代码:

要注意的是,展开命名空间要写在头文件之后,这是规范的写法,符合顺序逻辑,也就是编译器的解析流程,这里不过多赘述。
2.cout与cin
(1)cout——标准输出流
- 基础输出语法:
cout << "Hello World"; // 输出字符串 cout << 10 << " is the answer"; // 链式输出(拼接不同类型) - 数据类型支持
cout通过运算符重载支持所有内置类型:
int num = 2025;
double pi = 3.1415926;
bool flag = true; cout << num << endl; // 输出:2025
cout << pi << endl; // 输出:3.14159(默认精度6位)
cout << flag << endl; // 输出:1(true为1,false为0)
在这里,我们就不需要像printf那样使用%d,%f,%lf等来输出对应类型的值了,因为cout可以自行判断。当然,如果需要输出小数点后指定多少位,或者一个数字占多少位,这里就不是那么简单了,在这种情况下,还是使用printf输出比较方便,因为C++是兼容C的。
(2)cin——标准输入流
- 头文件:
#include <iostream> - 本质:
cin是std::istream类的全局实例,绑定标准输入设备(通常为键盘) - 缓冲机制:输入内容暂存于内存缓冲区,按需提取至变量
- 基础数据读取
int age;
double salary;
cin >> age >> salary; // 输入"30 85000.5"后,age=30, salary=85000.5
- 自动类型转换:将输入字符序列转换为目标类型数据;
- 空格分隔:默认跳过前导空白,以空格/换行为数据分隔符;
- 链式操作:支持连续提取多个变量。
总而言之,cin就相当于C语言中的scanf。
(3)endl——流操纵器
endl是C++标准库中定义的流操纵器(Manipulator),其行为包含两个不可分割的原子操作:-
- 换行输出:向输出流插入换行符
\n,使后续输出从新行开始;
- 换行输出:向输出流插入换行符
-
- 强制刷新:调用
flush()方法,立即将流缓冲区内容写入目标设备(如控制台、文件、网络套接字)。
- 强制刷新:调用
简单来讲,先将endl理解为'\n'即可。
3. << 流插入与 >> 流提取
流插入运算符<<
- 流插入运算符
<<是C++中输出流操作的核心工具,其本质是ostream类中重载的运算符函数。通过该运算符,数据从内存对象流向输出设备(如控制台、文件、网络套接字)。 - 什么是
控制台?黑框框就是:

流提取运算符>>
- 流提取运算符
>>是C++输入流(istream)的核心操作符,用于从输入源(如键盘、文件、网络)提取数据到变量。其本质是istream类中重载的运算符函数,遵循链式调用规则。
如图所示:
这里>>就是将键盘上输入的10提取出来,赋给变量a。
三、缺省参数
1.缺省参数的概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参,举个简单的例子:

如图所示,Fun函数中提供了一个缺省参数a=1,也就是说,当我们没有传参的时候,它就会默认调用a=1,输出结果为1;如果传参了,比如这里传了一个10,那么就传什么输出什么。
2.缺省参数的分类
- 全缺省参数
如图所示:

这里在函数定义中,三个参数都是缺省参数,还是这样的原则:没传参就使用缺省参数,如果传参那么就传什么输出什么,并且,这里是有顺序的,Fun(20)就是先把20传给a,b和c使用缺省参数;Fun(20,30)就是先传给a,b,c依然使用缺省参数。 - 半缺省参数
如图所示:

需要注意的是,半缺省参数必须从右往左依次来给出,不能间隔着给,如图:




前一个例子是缺省的两边,中间没有缺省参数;后一个是从左往右安排的缺省参数,这些都是不对的。
本期总结+下期预告
本期内容为大家详细介绍了C++的输入输出和缺省参数,下期内容将为大家带来函数重载和引用相关的知识!
感谢大家的关注,我们下期再见!

相关文章:
C++入门——输入输出、缺省参数
C入门——输入输出、缺省参数 一、C标准库——命名空间 std C标准库std是一个命名空间,全称为"standard",其中包括标准模板库(STL),输入输出系统,文件系统库,智能指针与内存管理&am…...
Spring Boot应用开发:从零到生产级实战指南
Spring Boot应用开发:从零到生产级实战指南 Spring Boot应用开发:从零到生产级实战指南一、Spring Boot的核心价值二、快速构建第一个Spring Boot应用2.1 使用Spring Initializr初始化项目2.2 项目结构解析2.3 编写第一个REST接口 三、Spring Boot的核心…...
【2025前端高频面试题——系列一之MVC和MVVM】
前端高频面试题——系列一之MVC和MVVM 前言一、MVC的基本逻辑二、MVVM的基本逻辑总结 提示:片尾总结了要点,硬背的话直接跳到最后 前言 相信持续关注我文章的小伙伴知道我之前就MVC和MVVM做过较为详细的讲解,但是我发现,他依旧是…...
基于遗传算法的IEEE33节点配电网重构程序
一、配电网重构原理 配电网重构(Distribution Network Reconfiguration, DNR)是一项优化操作,旨在通过改变配电网中的开关状态,优化电力系统的运行状态,以达到降低网损、均衡负载、改善电压质量等目标。配电网重构的核…...
HTTP协议与Web开发
🌐 HTTP协议与Web开发完全指南:从原理到实战 一、HTTP协议是什么? HTTP(超文本传输协议) 是互联网上应用最广泛的网络协议,作为Web开发的基石,它具有以下核心特性: 无状态协议&am…...
容器编排革命:从 Docker Run 到 Docker Compose 的进化之路20250309
容器编排革命:从 Docker Run 到 Docker Compose 的进化之路 一、容器化部署的范式转变 在 Docker 生态系统的演进中,容器编排正从“手动操作”走向“自动化管理”。根据 Docker 官方 2023 年开发者调查报告,78% 的开发者已采用 Docker Compo…...
【高并发内存池】释放内存 + 申请和释放总结
高并发内存池 1. 释放内存1.1 thread cache1.2 central cache1.3 page cache 2. 申请和释放剩余补充 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃&#x…...
自然语言处理:最大期望值算法
介绍 大家好,博主又来给大家分享知识了,今天给大家分享的内容是自然语言处理中的最大期望值算法。那么什么是最大期望值算法呢? 最大期望值算法,英文简称为EM算法,它的核心思想非常巧妙。它把求解模型参数的过程分成…...
Python绘制数据分析中经典的图形--列线图
Python绘制数据分析中经典的图形–列线图 列线图是数据分析中的经典图形,通过背后精妙的算法设计,展示线性模型(logistic regression 和Cox)中各个变量对于预测结果的总体贡献(线段长短),另外&…...
11. 盛最多水的容器(力扣)
11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不…...
vue3 vite或者vue2 百度地图(卫星图)离线使用详细讲解
1、在Windows上下载瓦片,使用的工具为: 全能电子地图下载器3.0最新版(推荐) 下载后解压,然后进入目录"全能电子地图下载器3.0最新版(推荐)\全能电子地图下载器3.0\MapTileDownloader" 在这个目录…...
Docker常用命令清单
一、镜像管理 拉取镜像 docker pull [镜像名]:[标签] 示例:docker pull nginx:latest (记忆:pull拉取,类似git拉取代码) 构建镜像 docker build -t [镜像名]:[标签] . 示例:docker build -t myapp:v1 . &a…...
大语言模型从理论到实践(第二版)-学习笔记(绪论)
大语言模型的基本概念 1.理解语言是人工智能算法获取知识的前提 2.语言模型的目标就是对自然语言的概率分布建模 3.词汇表 V 上的语言模型,由函数 P(w1w2 wm) 表示,可以形式化地构建为词序列 w1w2 wm 的概率分布,表示词序列 w1w2 wm…...
Unity 通用UI界面逻辑总结
概述 在游戏开发中,常常会遇到一些通用的界面逻辑,它不论在什么类型的游戏中都会出现。为了避免重复造轮子,本文总结并提供了一些常用UI界面的实现逻辑。希望可以帮助大家快速开发通用界面模块,也可以在次基础上进行扩展修改&…...
入门到入土,Java学习day15(常用API下)
group存数据 public String[] matches(String regex)判断字符串是否满足正则表达式的规则 public String replaceAll(String regex,String newStr)按照正则表达式的规则进行替换 public String[] split(String regex)按照正则表达式的规则切割字符串 通常是创建网页对象&am…...
Navigation的进阶知识与拦截器配置
Navigation的进阶知识与拦截器配置 写的不是很详细,后续有时间会补充,建议参考官方文档食用 1.如何配置路由信息 1.1 创建工程结构 src/main/ets ├── pages │ └── navigation │ ├── views │ │ ├── Mine.ets //…...
基于大模型的小脑扁桃体下疝畸形全流程预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义 二、小脑扁桃体下疝畸形概述 2.1 定义与分类 2.2 发病机制与病因 2.3 临床表现 2.4 诊断方法 三、大模型在小脑扁桃体下疝畸形预测中的应用 3.1 大模型介绍 3.2 数据收集与处理 3.3 模型训练与验证 四、术前预测与…...
Java数据结构第二十一期:解构排序算法的艺术与科学(三)
专栏:Java数据结构秘籍 个人主页:手握风云 目录 一、常见排序算法的实现 1.1. 归并排序 二、排序算法复杂度及稳定性分析 一、常见排序算法的实现 1.1. 归并排序 归并排序是建⽴在归并操作上的⼀种有效的排序算法,该算法是采⽤分治法的一个⾮常典型的…...
go切片定义和初始化
1.简介 切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。切片的使用和数组类似,遍历切片、访问切片的元素和切片的长度都一样。。切片的长度是可以变化的,因此切片是一个可以动态变化的数…...
使用 Docker 部署 Nginx,配置后端 API 轮询与多个子域名前端应用
使用 Docker 部署 Nginx,配置后端 API 轮询与多个子域名前端应用 在这篇博客中,我们将介绍如何通过 Docker 部署 Nginx 服务器,并配置 多个后端 API 的轮询负载均衡,同时通过 子域名 部署多个不同的前端应用。Nginx 将作为反向代…...
【NLP 39、激活函数 ⑤ Swish激活函数】
我的孤独原本是座荒岛,直到你称成潮汐,原来爱是让个体失序的永恒运动 ——25.2.25 Swish激活函数是一种近年来在深度学习中广泛应用的激活函数,由Google Brain团队在2017年提出。其核心设计结合了Sigmoid门控机制和线性输入的乘积,…...
C语言经典案例-菜鸟经典案例
1.输入某年某月某日,判断这一天是这一年的第几天? //输入某年某月某日,判断这一天是这一年的第几天? #include <stdio.h>int isLeapYear(int year) {// 闰年的判断规则:能被4整除且(不能被100整除或…...
南开提出1Prompt1Story,无需训练,可通过单个连接提示实现一致的文本到图像生成。
(1Prompt1Story)是一种无训练的文本到图像生成方法,通过整合多个提示为一个长句子,并结合奇异值重加权(SVR)和身份保持交叉注意力(IPCA)技术,解决了生成图像中身份不一致…...
STM32驱动OLED屏幕全解析:从原理到温度显示实战(上) | 零基础入门STM32第五十三步
主题内容教学目的/扩展视频OLED显示屏重点课程电路原理,手册分析,驱动程序。初始化,清屏,ASCII字库,显示分区。调用显示函数。做带有加入图形和汉字显示的RTC时钟界面。讲字库的设计原理。 师从洋桃电子,杜…...
MySQL语法总结
本篇博客说明: !!!.注意此系列都用的是MySQL语句,和SQLServer,PostgreSQL有些细节上的差别!!! 1.每个操作都是先展示出语法格式 2.然后是具体例子 3.本篇注脚与文本顺讯息…...
从预测到控制:电力RK3568边缘计算机在电网调度中的全面应用
在智能电网的快速发展中,电力Ubuntu工控机(简称“电力工控机”)作为核心设备,扮演着不可或缺的角色。特别是在智能电网调度场景中,电力工控机的高效、稳定和智能化特性,为电网的稳定运行和高效管理提供了强…...
Spring Batch 概览
Spring Batch 是什么? Spring Batch 是 Spring 生态系统中的一个轻量级批处理框架,专门用于处理大规模数据任务。它特别适合企业级应用中需要批量处理数据的场景,比如数据迁移、报表生成、ETL(Extract-Transform-Load)…...
day-106 统计放置房子的方式数
思路 动态规划:因为中间有街道隔开,所以只需计算一边街道的排列方式,最后计算平方即可 解题过程 动态转换方程:f[i]f[i-1]f[i-2] Code class Solution {int num 1000000007;public int countHousePlacements(int n) {int arr[…...
PostgreSQL安装和mcp PostgreSQL
文章目录 一. 安装之后修改权限并登录1. 确保当前用户具有sudo权限2. 修改/etc/postgresql/<版本号>/main/pg_hba.conf配置文件为trust,可以免密登录3. 进行免密登录4. 添加root用户和修改postgres用户密码1. postgres用户密码2. 添加root用户3. 为root用户设…...
解决电脑问题(10)——桌面问题
电脑桌面出现问题的情况多样,以下是一些常见问题及解决方法: 桌面图标问题 图标显示异常:如果图标模糊、失真或显示为未知图标,可能是图标缓存出现问题。在 Windows 系统中,可通过在任务管理器中重启 “Windows 资源管…...
