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…...
deepseek 本地部署
deepseek 本地部署 纯新手教学,手把手5分钟带你在本地部署一个私有的deepseek,再也不用受网络影响。流畅使用deepseek!!! 如果不想看文章,指路:Deep seek R1本地部署 小白超详细教程 ࿰…...
[网络爬虫] 动态网页抓取 — Selenium 入门操作
🌟想系统化学习爬虫技术?看看这个:[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01:WebDriver 类基础属性 & 方法 为模仿用户真实操作浏览器的基本过程,Selenium 的 WebDriver 模块提供了一个 WebDriver 类…...
HTML 超链接(简单易懂较详细)
在 HTML 中,超链接是通过 <a> 标签(anchor tag)创建的。超链接允许用户通过点击文本、图像或其他元素跳转到另一个网页、文件或页面的特定部分。本文将详细介绍 HTML 超链接的语法、属性和应用场景。 一、基本语法 <a href"U…...
rpc和proto
rpc全称远程过程控制,说白了是一种对信息发送和接收的规则编写方法,来自google,这些规则会以protobuf代码存到proto文件里。我以autoGen中agent_worker.proto为例,大概长这样 syntax "proto3";package agents;option …...
OPENGLPG第九版学习 -颜色、像素和片元 PART1
文章目录 4.1 基本颜色理论4.2 缓存及其用途颜色缓存深度缓存 / z缓存 / z-buffer模板缓存 4.2.1 缓存的清除4.2.2 缓存的掩码 4.3 颜色与OpenGL4.3.1 颜色的表达与OpenGL4.3.2 平滑数据插值 4.4 片元的测试与操作4.4.1 剪切测试4.4.2 多重采样的片元操作4.4.3 模板测试模板查询…...
【js逆向】某精灵网
地址:aHR0cHM6Ly93d3cuamluZ2xpbmdzaHVqdS5jb20vYXJ0aWNsZXM f12查看数据包,下面这个不是,你得到的是你的用户信息,需要点击第2页才会显示数据接口 查看载荷 查看预览数据,发现是加密的 查看启动器,看到 Pr…...
自然语言处理:高斯混合模型
介绍 大家好,博主又来给大家分享知识了,今天给大家分享的内容是自然语言处理中的高斯混合模型。 在自然语言处理这个充满挑战与机遇的领域,我们常常面临海量且复杂的文本数据。如何从这些数据中挖掘出有价值的信息,对文本进行有…...
RISC-V汇编学习(三)—— RV指令集
有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识,本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点,是以RV32I为作为ISA的核心模块,其他都是要基于此为基础,可以这样认为:RISC-V ISA 基本整数指…...
OpenCV连续数字识别—可运行验证
前言 文章开始,瞎说一点其他的东西,真的是很离谱,找了至少两三个小时,就一个简单的需求: 1、利用OpenCV 在Windows进行抓图 2、利用OpenCV 进行连续数字的检测。 3、使用C,Qt 3、将检测的结果显示出来 …...
Python中与字符串操作相关的30个常用函数及其示例
以下是Python中与字符串操作相关的30个常用函数及其示例: 1. str.capitalize() 将字符串的第一个字符大写,其余字符小写。 s "hello world" print(s.capitalize()) # 输出: Hello world2. str.lower() 将字符串中的所有字符转换为小写。…...
007-Property在C++中的实现与应用
Property在C中的实现与应用 以下是在C中实现属性(Property)的完整实现方案,结合模板技术和运算符重载实现类型安全的属性访问,支持独立模块化封装: #include <iostream> #include <functional>template<typename HostType, t…...
【实战篇】【DeepSeek 全攻略:从入门到进阶,再到高级应用】
凌晨三点,某程序员在Stack Overflow上发出灵魂拷问:“为什么我的DeepSeek会把财务报表生成成修仙小说?” 这个魔性的AI工具,今天我们就来场从开机键到改造人类文明的硬核教学。(文末含高危操作集锦,未成年人请在师父陪同下观看) 一、萌新村任务:把你的电脑变成炼丹炉 …...
clickhouse属于国产吗
《ClickHouse:探索其背景与国内的应用实例》 当我们谈论数据库技术时,ClickHouse是一个绕不开的话题。很多人可能会好奇,ClickHouse是否属于国产软件呢?答案是,虽然ClickHouse最初并非在中国开发,但这款列…...
ESP32 UART select解析json数据,上位机控制LED灯实验
前言: 本实验的目的主要是通过上位机通过UART来控制ESP32端的LED的点亮以及熄灭,整个项目逻辑比较简单,整体架构如下: 上位机(PC)主要是跑在PC端的一个软件,主要作用包含: 1)串口相关配置&…...
K8S 集群搭建——cri-dockerd版
目录 一、工作准备 1.配置主机名 2.配置hosts解析 3.配置免密登录(只需要在master上操作) 4.时间同步(每台节点都要做,必做,否则可能会因为时间不同步导致集群初始化失败) 5.关闭系统防火墙 6.配置…...
基于Python的电商销售数据分析与可视化系统实
一、系统架构设计 1.1系统流程图 #mermaid-svg-Pdo9oZWrVHNuOoTT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Pdo9oZWrVHNuOoTT .error-icon{fill:#552222;}#mermaid-svg-Pdo9oZWrVHNuOoTT .error-text{fill:#5…...
学习笔记:Python网络编程初探之基本概念(一)
一、网络目的 让你设备上的数据和其他设备上进行共享,使用网络能够把多方链接在一起,然后可以进行数据传递。 网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。 二、IP地址的作用 用来标记唯一一台电脑…...
高效处理 List<T> 集合:更新、查找与优化技巧
引言 在日常开发中,List<T> 是我们最常用的数据结构之一。无论是批量更新数据、查找特定项还是进行复杂的集合操作,掌握 List<T> 的高级用法可以显著提高代码的效率和可读性。本文将详细介绍如何使用 List<T> 进行批量更新、查找匹配项以及优化性能的方法…...
HTML5(Web前端开发笔记第一期)
p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解 目录 三件套标签标题标签段落标签文本格式化标签图像标签超链接标签锚点链接默认链接地址 音频标签视频标签 HTML基本骨架综合案例->个人简介列表表格表单input标签单选框radio上传…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
