概念梳理:C++中iostream头文件和命名空间的基础介绍和拓展内容

提示:陌生人要天天开心

文章目录

  • 前言
  • 一、iostream头文件
    • cin和cout的运行原理
    • 个人梳理
  • 二、命名空间
    • std::cin与cin和std::cout与cout
  • 结语
  • 参考文献:


前言

本文要记录的大概内容:

本文主要记录C++中的iostream头文件和命名空间的内容,包含cin和cout的运行原理,std::cin和cin还有std::cout和cout之间的差别,并针对它们的使用方法展开拓展。

新手小白,如有错误,请见谅。


以下是本篇文章正文内容,下面代码案例可供参考

一、iostream头文件

#include

iostream,iostream的io分别是input(输入)output(输出)首字母,iostream的stream其实是英语单词stream(流)
概念梳理:C++中iostream头文件和命名空间的基础介绍和拓展内容_第1张图片


iostram头文件包含了对输入输出流进行相关操作所需的基本信息,像我们在C++中常用的cincout便要在包含此头文件时才能投入使用。

名称 介绍
cin istream的派生类istream_withassign的对象,其与标准输入设备相联系,默认情况下指键盘
cout ostream的派生类ostream_withassign的对象,其与标准输出设备相联系,默认情况下指显示器

下列表格表头中的名称指的是经由iostream头文件重载后的名称

符号 名称 介绍 原型
>> 提取运算符(输入运算符 原为右位移运算符,在iostream头文件将其进行重载后,它能够被用作标准类型数据的输入运算符,常与cin搭配使用 istream &operator>>(istream &,类型名&)
<< 插入运算符(输出运算符 原为左位移运算符,在iostream头文件将其进行重载后,它能够被用作标准类型数据的输出运算符,常与cout搭配使用 ostream &operator<<(ostream &,类型名)

ps:表格中介绍原型的目的是帮助大家在学习运算符函数重载的时候可以根据其原型来针对性地重载’>>‘和’<<'。

由于istream和ostream类都是在头文件iostream中声明的,'>>‘和’<<'的相关重载内容又被iostream头文件所涵盖,所以只要用预编译命令包含iostream头文件后就可以将cin与’>>‘或cout与’<<'搭配使用来进行基础的输入输出操作。

cin和cout的运行原理

上文的表格提到cin和cout分别是istream_withassign和ostream_withassign的对象,如普通的对象一样,cin和cout都是这个对象的名称,对象代表数据流

cin是从标准输入设备(键盘)输入到内存的数据流,称为cin流或标准输入流。
cout是从内存输入到标准输出设备(显示器) 的数据流,称为cout流或标准输出流。

个人梳理

当需要输入内容时:
1、由于cin在默认情况下和我们的键盘相连接,所以我们从键盘上按下的按键产生的字符数据会被导入到cin所代表的数据流中

2、提取运算符>>将数据从这条数据流中提取出来再输入到对应的变量之中,从而完成对变量数据的赋值

输入流中的数据不会消失,只会不再读取该数据

当需要输出内容时:
1、插入运算符<<将数据从其右侧的变量中提取出来再将数据导入到右侧名为cout的数据流中
2、由于cout这条数据流在默认情况下与我们的显示器相连接数据就出现在了屏幕上数据的输出就由此完成了

程序举例:

#include
using namespace std;

int main(){
	int name;
	cin>>name;
	cout<<name;
	
return 0;
}

当我们输入数据时,数据会先到cin这个输入流中,然后提取运算符>> 将该数据导入到变量name中

当我们输出数据时,插入运算符<<就会将name变量之中的数据复制一份,随后导入到cout所代表的的输出流当中,进而出现在我们的显示屏上

因为提取运算符>>关于变量形参是带引用符号(‘&’)的(该名称代表原有变量的别名,也就是一个变量多个名称),因此>>是可以改变变量数据的也就是变量name的数据

二、命名空间

下文内容来自C++ Primer Plus(第6版)中文版,P15

名称空间支持是一项C++特性,旨在让您编写大型程序以及将多个厂商的现有的代码组合起来的程序时更容易,它还有助于组织程序。一个潜在的问题是,可能使用两个已封装好的产品,而它们都包含一个名为wanda()的函数。这样使用wanda()的函数时,编译器将不知道指的是哪个版本名称空间让厂商能够将其产品封装在一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出想使用哪个厂商的产品。因此,Microflop Industries 可以将其定义放在一个名为Microflop的名称中。这样,其wanda()函数的全称为Microflop::wanda();同样,Piscine公司的wanda()版本可以表示为Piscine::wanda()。这样,程序就可以使用名称空间来区分不同的版本了。

一种新思想的出现会对从前的代码产生巨大的影响。
命名空间是人们为了解决名称冲突所找到的方法,至于头文件iostream.h则是人们不想让原有的大量代码被迫修改所找到的权宜之计C++标准是明确不支持这种用法的

std::cin与cin和std::cout与cout

当我们没有包括其他与cin或cout重名的命名空间时,若加入

using namespace std;

cin这个对象则可以直接写成cin而不必写成std::cin。若没有上述的语句,想使用cin对象进行输入则必须写成std::cin来进行使用

我个人觉得,当自己所写的程序十分简单时,使用命名空间能够帮助我们进行程序的设计。

作为类似的存在,cout和cin是同理的。

cout这个对象则可以直接写成cout而不必写成std::cout。若没有上述的语句,想使用cout对象进行输入则必须写成std::cout来进行使用


结语

以上即是本文要介绍的全部内容。
另外,欢迎大家评论,一起学习!


参考文献:

1、C++ Primer Plus(第6版)中文版
2、C++ 面向对象程序设计教程(第四版)陈维新 林小茶 编著

提示:陌生人要天天开心,想学的都能学会的!!!

你可能感兴趣的:(c++,经验分享,visual,studio,code)