using namespace std 介绍

2023-11-04

using namespace std;

首先我们要知道,这句代码的意思是:打开标准命名空间,即告诉编辑器我们将要使用名字空间std中的函数或者对象。

using 意思就是正在使用的意思。
namespace 的引用是为了解决不同space中命名相同导致命名冲突的问题。使用using namespace …的引用可以让编译器准确的找到我们需要的函数或者对象,能有效的提高程序员写代码的效率,但这些都和性能无关,仅仅对程序员有利。
std 是个名称空间标识符,C++标准库中的函数或者对象都是在命名空间std中定义的,所以我们要使用标准库中的函数或者对象都要用std::来限定。

只是在std 标准空间里,包含了原来的库和头文件。但是在C++ 中因为我们要使用的STL中有部分名称是没有加下划线的保留标记的,而这些名称如果再用在自己的源代码中 就会引发未定义的后果。

所以当我们在写成熟的代码的时候,一般不建议将标准命名空间全部打开,而是需要用库里的什么就打开什么。这就有效的防止了命名冲突

下面是std中常用的标准对象 : cin>>标准输入,cout<<标准输出,endl 换行  和函数 string 字符串 在代码中的三种使用。

第一种使用:使用using namespace std; 完全打开std 命名空间 --不安全,超简单

需包含< iostream>头文件,再在include后面使用 using namespace std;
注意: 此时可以直接使用std中包含的所有函数和对象。

#include <iostream>
using namespace std;        
int main()
{
	string a;   //定义a为字符串
	cin >> a;  //标准输入a
	cout << a<<endl;   //标准输出a,并换行
	return 0;
}

 

第二种使用:提前打开需要使用的std 中对象/函数 --安全,推荐

需包含< iostream>头文件,再在include后面使用using std::(名称) 依次打开需要的对象。
注意: 使用提前打开的对象时可直接使用,使用未提前打开的对象时需先打开再使用。

#include <iostream>
using std::string;   //   提前打开需要的名字
using std::cout;                
using std::endl;  
using std::cin;  //没有打开会报错
int main()
{
	string a;
	cin >> a;
	cout << a<<endl;  //运行结果与上面相同
	return 0;
}

第三种使用:什么时候用什么时候打开std 中对象/函数 --安全,较复杂

需包含< iostream>头文件,每次在使用的地方都用 std::(名称) 打开需要的对象。
注意: 每次使用时都需要在当前位置再打开一次

#include <iostream>

int main()
{
	std::string a;
	std::cin >> a;
//	cin >> a;       //没有打开,会报错
	std::cout<<a<<std::endl;     //运行结果与上面相同
//  cout << a;   //第二次使用时,仍然需要再次打开,否则报错
   std::cout<<a;   //运行结果多一个hello,但没有换行
	return 0;
}

 

 

文件中尽量不使用using namespace …,头文件中禁止使用
我不建议在头文件中使用 using namespace xxx 语句,不仅是对std空间。
如果头文件a.h使用了该语句,那么所有与a.h有关系的文件都会默认使用该语句,也就是说引用a.h头文件的都被迫using了,所以引用头文件的越多就会越容易导致命名冲突。

那如果实在是懒的将需要使用std中的函数名一一列举,也是可以使用的,只要你编译没有问题就可以啦!!毕竟C++库中的类型名基本都是小写,多用心也是可以避免命名冲突的问题~~

博主目前的理解只能到这里啦,如果之后有更深的理解,我会更新的~
其他大佬若有其他意见,欢迎留言讨论。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

using namespace std 介绍 的相关文章

  • 为什么相同的代码在同一台计算机上的执行时间可能不同?

    我是 C 编程新手 我编写了代码并希望获得它的运行时 这就是我所做的 每次运行代码时 我都会得到不同的运行时值 这样对吗 或者我的代码有问题吗 int main int argc char argv time t start end sta
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 如何在 C# 中定义文本框数组?

    您好 当我在 Windows 申请表上创建文本框时 我无法将其命名为 box 0 box 1 等 我这样做的目的是因为我想循环使用它们 其实我发现TextBox array firstTextBox secondTextBox 也有效
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • 私有模板函数

    我有一堂课 C h class C private template
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • opencv读取rtsp的一些优化

    用队列将同步转为异步 import cv2 import queue import time import threading q queue Queue def Receive print start Reveive cap cv2 Vi
  • 迅雷链同构多链框架解析

    本文转载自迅雷官方微信群 传统意义上的 甚至是消费者端熟知的迅雷 是那家唯一在美国上市的中国下载服务商 主营业务还是在线广告 游戏和会员 迅雷从2015年开始对分布式计算和区块链领域的布局 这几年 迅雷布局了CDN 推出了C端的赚钱宝和玩客
  • Notepad++ 支持markdown语法

    之前windows下想编写markdown只是通过有道云笔记来写 看的时候简单的就直接用notepad 看 有些语法得导入到有道云笔记中看很不方便 搜索windows下的markdown编辑工具 Typora sublime markdow
  • myBase7安全破解的方法

    转自https blog csdn net weixin 42414714 article details 89642305 首先 保证myBase7是关闭状态 然后执行以下步骤 1 找到myBase7的安装目录 右击mybase的启动图标
  • 用Python预测收入,来看看你的收入到底应该是多少?

    Python界的网红机器学习 这股浪潮已经逐渐成为热点 而Python是机器学习方向的头牌语言 用机器学习来玩一些好玩的项目一定很有意思 比如根据你的职业 婚姻 家庭 教育时间等等来预测你的收入 这么神奇 不信的话 一起跟我往下看 1 数据
  • 如何使用chatGPT进行论文润色(中英文均可)

    1 为什么ChatGPT可以进行论文润色 ChatGPT本质是一个基于GPT3 5 应用在对话场景的超大语言模型 在各种数据集上经过训练而来的 很好的掌握了语言的 本质 特征 自然可以进行语言相关的工作 论文润色只是小事情 2 如何使用ch
  • 搭建简单的神经网络——使用pytorch实现鸢尾花的分类

    最近写毕业论文 看到网上的pytorch入门nn方法乱七八糟 遂写了本篇方法 好让更多的人可以使用pytorch实现简单的神经网络方法 version python 3 7 9 pytorch 1 7 0 function 利用神经网络进行
  • 区块链中的:哈希算法

    什么是哈希算法 哈希算法 又称散列算法 它是一个单向函数 可以把任意长度的输入数据转化为固定长度的输出 h H x h H x h H x 例如 对 morning 和 bitcoin 两个输入进行某种哈希运算 得到的结果是固定长度的数字
  • 当根据条件查询数据库中记录没有,但是又想返回0怎么办?

    我们平时在操作数据库的时候 对于null的记录或者字段相信大家都可以用ifnull 来判断为null的时候需求返回什么数据 但是如果根据条件查询的时候 数据库根本没有这条记录但是又想返回数据不存在时候的结果该怎么办 比如你统计一个时间区间的
  • 关于g2o的使用笔记

    文章目录 前言 一 g2o进行非线性优化 二 g2o进行前端位姿优化 三 g2o进行后端位姿优化 总结 前言 g2o是比较流行的图优化库 在视觉slam中的应用非常广泛 关于如何利用g2o求解BA优化问题 在此作个笔记 以供后面的学习中方便
  • webRTC的标准与发展

    Web实时通信 WebRTC 是标准 协议和JavaScript API的集合 两者的组合可实现浏览器 对等 之间的对等音频 视频和数据共享 WebRTC无需依赖第三方插件或专有软件 而是将实时通信转变为任何Web应用程序都可以通过简单的J
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 一觉睡醒,ChatGPT 竟然被淘汰了?

    点击上方 码农突围 马上关注 这里是码农充电第一站 回复 666 获取一份专属大礼包 真爱 请设置 星标 或点个 在看 来源丨转自公众号 机器之心 编辑 杜伟 陈萍 OpenAI 的 Andrej Karpathy 都大力宣传 认为 Aut
  • Stream流(入门篇)

    目录 前言 1 Stream流概述 2 获取Stream流的方式 2 1 单列集合获取Stream流 2 2 双列集合获取Stream流 2 3 数组获取Stream流 2 4 零散数据获取Stream流 3 Stream流的中间方法 4
  • mybatisplus 增删改查&使用技巧

    一 查询条件使用 单个查询 如果返回多条会抛异常 User user userService getOne Wrappers
  • Docker-compose安装mysql

    介绍 本系列文章主要介绍使用docker compose部署mysql nginx redis等中间件 前后分离微服务项目部署流程 不介绍docker安装以及基础命令 话不多说首先进入mysql安装教学 操作 首先创建个目录用来存放dock
  • vue2和vue3的10种组件通信

    vue2和vue3的10种组件通信
  • Android 12(S) 版本适配指南

    前言 系统行为变更通常属于以下两种类别之一 面对所有应用的行为变更 运行在该系统版本上的所有应用都会影响 而无论应用的targetSDKVersion为何 通常应该先针对这些变更进行适配和测试 这有助于用户在新版本系统上运行你的应用时 用户
  • 打开多个Android Studio卡死的解决方法(提示内存不足)

    找到Android Studio的安装路径 打开bin文件夹下的studio exe vmoptions 可以用记事本打开 找到下面三个参数 默认设置的如下 Xms256m Java能够分配的内存 Xmx768m JAVA能够分配的最大内存
  • using namespace std 介绍

    using namespace std 首先我们要知道 这句代码的意思是 打开标准命名空间 即告诉编辑器我们将要使用名字空间std中的函数或者对象 using 意思就是正在使用的意思 namespace 的引用是为了解决不同space中命名