C++从入门到起飞之——输入输出!
目录
1.命名空间
1.1namespace的价值
1.2namespace的定义
1.3命名空间使⽤
2.C++输⼊&输出
3.完结散花
![]()
个人主页:秋风起,再归来~
C++从入门到起飞
个人格言:悟已往之不谏,知来者犹可追
克心守己,律己则安!
1.命名空间
1.1namespace的价值
c语⾔项⽬类似下⾯程序这样的命名冲突是普遍存在的问题,C++引⼊namespace就是为了更好的解决 这样的问题
#include<stdio.h>
//#include<stdlib.h>int rand = 10;int main()
{printf("%d\n",rand);
}
运行时编译没有报错!

将头文件<stdlib.h>放开,有报错!
#include<stdio.h>
#include<stdlib.h>
int rand = 10;
int main()
{printf("%d\n",rand);
}

报错的原因就在于,当我们将头文件<stdlib.h>放开,在编译预处理阶段,编译器会将头文件自动展开,而头文件<stdlib.h>中包含函数rand,这时在全局域中就一个全局变量rand,并且有一个函数名为rand因此发生命名冲突!
在C/C++中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全 局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名 冲突或名字污染,namespace关键字的出现就是针对这种问题的。
1.2namespace的定义
• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。
namespace Test
{//变量int rand;//函数void func(){return;}//类,后面会讲到class test{public:void Test(){return;}private:int a;int b;};
}
• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。
• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的声明周期,命名空间域和类域不影响变量声明周期。
• namespace只能定义在全局,当然他还可以嵌套定义。
//命名空间的嵌套定义
namespace Test2
{int a=10;namespace Test3{int a = 10; }
}
• 项⽬⼯程中多⽂件中定义的同名namespace会认为是⼀个namespace,不会冲突。
• C++标准库都放在⼀个叫std(standard)的命名空间中。
>开始C语言中命名冲突的问题现在就可以用命名空间来解决了!
#include<stdlib.h>
namespace Test
{int rand = 10;
}
int main()
{// 这⾥默认是访问的是全局的rand函数指针(即rand函数返回一个地址)printf("%p\n", rand);// 这⾥指定Test命名空间中的rand(后面会讲命名空间的使用)printf("%d\n", Test::rand);
}

1.3命名空间使⽤
编译查找⼀个变量的声明/定义时,默认只会在局部或者全局查找,不会到命名空间⾥⾯去查找。
所以我们要使⽤命名空间中定义的变量/函数,有三种⽅式:
• 指定命名空间访问,项⽬中推荐这种⽅式。

• using将命名空间中某个成员展开,项⽬中经常访问的不存在冲突的成员推荐这种⽅式。
namespace Test
{int a = 10;int b = 20;
}
using Test::a;//a成员被打开int main()
{printf("a=%d,b=%d\n", a, Test::b);return 0;
}

• 展开命名空间中全部成员,项⽬不推荐,冲突⻛险很⼤,⽇常⼩练习程序为了⽅便推荐使⽤。
namespace Test
{int a = 10;int b = 20;
}
using namespace Test;//打开命名空间的全部成员int main()
{printf("a=%d,b=%d\n", a, b);return 0;
}

2.C++输⼊&输出
• <iostream>是Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输 出对象。
• std::cin 是 istream 类的对象,它主要⾯向窄字符(narrow characters (of type char))的标准输 ⼊流。
• std::cout 是 ostream 类的对象,它主要⾯向窄字符的标准输出流。
• std::endl是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。
• >是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)
• 使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊ 输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是 C++的流能更好的⽀持⾃定义类型对象的输⼊输出。
• IO流涉及类和对象,运算符重载、继承等很多⾯向对象的知识,这些知识我们还没有讲解,所以这 ⾥我们只能简单认识⼀下C++IO流的⽤法,后⾯我们会有专⻔的⼀个章节来细节IO流库。
• cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们。
• ⼀般⽇常练习中我们可以using namespace std,实际项⽬开发中不建议using namespace std。
• 这⾥我们没有包含<stdio.h>,也可以使⽤printf和scanf,在包含间接包含了。vs系列 编译器是这样的,其他编译器可能会报错
#include<iostream>
using namespace std;//日常小练习和OJ刷题推荐使用,大型项目不推荐,风险太大int main1()
{int a = 10;double b = 5.9;char c = 'h';cout <<"a="<< a << " b=" << b << " c=" << c << endl;//自动识别类型printf("a=%d b=%0.1lf c=%c\n", a, b, c);return 0;
}int main()
{int a = 10;double b = 5.9;char c = 'h';cin >>a >> b >> c;//可以自动识别类型cout << "a=" << a << " b=" << b << " c=" << c << endl;//自动识别类型printf("a=%d b=%0.1lf c=%c\n", a, b, c);return 0;
}
>在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码, 可以提⾼C++IO效率
#include<iostream>
using namespace std;
int main()
{// 在io需求⽐较⾼的地⽅,如部分⼤量输⼊的竞赛题中,加上以下3⾏代码// 可以提⾼C++IO效率ios_base::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);return 0;
}
3.完结散花
好了,这期的分享到这里就结束了~
如果这篇博客对你有帮助的话,可以用你们的小手指点一个免费的赞并收藏起来哟~
如果期待博主下期内容的话,可以点点关注,避免找不到我了呢~
我们下期不见不散~~
相关文章:
C++从入门到起飞之——输入输出!
目录 1.命名空间 1.1namespace的价值 1.2namespace的定义 1.3命名空间使⽤ 2.C输⼊&输出 3.完结散花 个人主页:秋风起,再归来~ C从入门到起飞 个人格言:悟已往之不谏,知来者犹可追 克心守己…...
米文AD10配置gmsl摄像头操作
一、进入桌面快捷方式 0、设置摄像头型号 miivii_websettings.desktop 设置摄像头 1、获取camera信息 cat /var/log/gmsl_camera.lognvidiamiivii-tegra:~$ cat /var/log/gmsl_camera.log attestationVerify [13] succeed. [INFO ]: miivii gmsl service start! [INFO ]: V…...
【Selenium配置】WebDriver安装浏览器驱动(ChromeEdge)
【Selenium配置】WebDriver安装浏览器驱动(Chrome&Edge) 文章目录 【Selenium配置】WebDriver安装浏览器驱动(Chrome&Edge)Chrome确认Chrome版本下载对应driver把解压后的chromedriver文件放在chrome安装目录下࿰…...
预测算法面试
这次面试的是一个预测算法的岗位。虽然我对供应链相关的预测很厌烦了,但是这个不是供应链领域的,感觉应该还好。 首先在介绍工作经历和项目部分,这次面试没有上来没有条理乱说一气,而是预测目标、算法架构、各种使用特征这些分层…...
号称世界上第一个开源实时翻译的 App,微软开源GraphRAG:极大增强大模型问答、摘要、推理,以及开源基于ChatGPT的超级文本代码智能体(附代码地址)
号称世界上第一个开源实时翻译的 App,微软开源GraphRAG:极大增强大模型问答、摘要、推理,以及开源基于ChatGPT的超级文本代码智能体(附代码地址) 在「端侧」上实现可离线的「实时同传」翻译,支持 29 语言的…...
PyTorch 2-深度学习-模块
PyTorch 2-深度学习-模块 一: pytorch1> pytorch 介绍2> pytorch 作用3> pytorch 优点4> pytorch 流程二:pytorch 模块1> torch.Tensor 模块2> torch.nn模块3> torch.nn.function模块4> torch.random模块5> torch.onnx模块6> torch.sparse模块7…...
【MyBatis】MyBatis 理论 40 问(二)
《MyBatis 理论 40 问》包含以下 2 篇文章: MyBatis 理论 40 问(一)MyBatis 理论 40 问(二) MyBatis 理论 40 问(二) 21.如何获取生成的主键?22.当实体类中的属性名和表中的字段名不…...
数据分析——Python网络爬虫(三){爬虫基本原理}
爬虫基本原理 爬虫基本流程拉取什么数据JavaScript渲染页面cookies爬虫代理检查robots.txt爬虫的攻与防 爬虫基本流程 • 获取网页源代码:通过库来实现,urllib,requests等实现http请求 • 提取信息:分析网页源代码࿰…...
Linux 忘记root密码,通过单用户模式修改
银河麒麟桌面操作系统 V10(sp1)”忘记用户密码,需要修改用户密码所写,可用于 X86 架构和 arm 架构。 2. 选择第一项,在上图界面按“e”键进行编辑修改。 3. 在以 linux 开头这行的行末,添加“init/bin/bas…...
安卓热门面试题二
什么是AndroidManifest.xml文件?它包含了哪些重要信息? AndroidManifest.xml文件是Android应用程序的全局配置文件,每个Android应用程序的根目录中都必须包含一个AndroidManifest.xml文件,且文件名不能修改。这个文件对于Android…...
agents 分类
一、分类 自动agent、半自动agent、领域、自定义sop和支持人为干预的agent。 先泼个冷水,目前这些agent项目都是实验品,发展还没有做知识库问答相关开源项目那么成熟, 二、全自动agent autoGPT、loopGPT、babyAGI 全自动agent就是人类不可…...
【期末考试复习】概率论与数理统计(知识点模式 - 复习题2)
题目: 设随机变量 X X X 的概率密度函数为 f ( x ) a b x f(x) a bx f(x)abx,其中 0 < x ≤ 1 0 < x \leq 1 0<x≤1; f ( x ) 0 f(x) 0 f(x)0,在其他情况下。已知 P ( X ≤ 1 / 2 ) 3 / 8 P(X \leq 1/2) 3/…...
Jetpack Compose实现一个简单的微信UI
https://blog.csdn.net/News53231323/article/details/128509048 https://franzliszt1847.blog.csdn.net/article/details/129344822...
myeclipse开发ssm框架项目图书管理系统 mysql数据库web计算机毕业设计项目
摘 要 随着计算机的广泛应用,其逐步成为现代化的标志。图书馆的信息量也会越来越大,因此需要对图书信息、借书信息、还书信息等进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高高…...
网络安全防御 -- 防火墙安全策略用户认证综合实验
实验拓扑: 实验目的: 1、DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问。 2、生产区不允许访问互联网,办公区和游客区允许访问互联网。 3、办公区设备10.0.2.10不允许访问DM…...
捷配笔记-PCB阻焊颜色对产品有什么影响?
阻焊层也称为阻焊层或阻焊剂。它是一种薄的聚合物层,应用于(PCB)。阻焊层的目的是保护PCB表面,并有助于防止焊桥。焊桥是两个导体之间的无意连接,通常是由于存在一小块焊料。需要注意的是,阻焊层被视为其单…...
网信大数据信用报告查询怎么查?网信大数据有什么作用?
随着互联网的快速发展,大数据技术已经广泛应用于各行各业。其中,网信大数据信用报告查询成为了许多人关注的焦点。那么,如何查询网信大数据信用报告呢?网信大数据又有哪些作用呢?本文将为您一一解答。 一、如何查询网信大数据信用报告? 要…...
【Vue】vue-element-admin组件化功能
1. 组件的封装 在vue-element-admin中,每个功能区域或UI元素都被封装成一个或多个Vue组件。这些组件可以是简单的按钮、输入框,也可以是复杂的表格、表单或页面布局。每个组件都包含了其模板(HTML结构)、逻辑(JavaScr…...
[论文笔记]涨点近5%! 以内容中心的检索增强生成可扩展的级联框架:Pistis-RAG
引言 今天带来一篇较新RAG的论文笔记:Pistis-RAG: A Scalable Cascading Framework Towards Content-Centric Retrieval-Augmented Generation。 在希腊神话中,Pistis象征着诚信、信任和可靠性。受到这些原则的启发,Pistis-RAG是一个可扩展…...
时钟系统框图(时钟树)解析
时钟系统框图(时钟树)解析 文章目录 时钟系统框图(时钟树)解析1、时钟树2、 4个时钟源:HSI、HSE、LSI、LSE3、PLL锁相环倍频输出4、系统时钟的来源5、Enable CSS(时钟监视系统)6、几个重要的时钟…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
