C++初阶入门超详细——命名空间和流插入流提取

目录

1.命名空间

 1.1认识命名空间

 1.2定义命名空间

 1.3使用命名空间

2.流插入和流提取

2.1流提取

2.2流插入

2.3重点


1.命名空间

          1.1认识命名空间

在我们刚接触写C++的时候,我们都会写的两行代码如下

#include<iostream>
using namepspace std;

int main()
{
     ...
     return 0
}

using namespace std;即是我们定义的命名空间,那你知道这句代码的作用是什么吗?

简单来讲:命名空间是对标识符的名称进行本地化,以避免命名冲突或名字污染

举个例子吧:

#include <stdio.h>
#include <stdlib.h>

int rand = 0;
int main()
{
	printf("%d ", rand);
	return 0;
}

这段代码运行如下

报错的原因是rand是一个全局函数 可我们又定义了一个int rand 编译器都不知道该输出什么!

所以啊,在C++中,为了防止这个问题出现,也就提出了命名空间这个概念,它的作用就是防止重名(比如头文件等)

using namespace std;

这个呢 就是使用std命名空间(std是C++标准库的命名空间),在运行的时候,编译器会先去std中寻找,如果找不到再从全局中找,这样就有效的填补了C语言的坑!

    1.2定义命名空间

using namespace xxx;

定义一个命名空间,我们需要用到namespace这个关键字,后面接着“XXX”就是我们定义命名空间的名字,{}里即为命名空间的成员

namespace bit
{
    int rand = 10;
}

命名空间不仅可以定义变量还可以函数,结构体等

namespace bit
{
	int rand = 10;
	int Add(int left, int right)
	{
		return left + right;
	}

	struct Node
	{
		int val;
		struct Node* next;
	};
}

命名空间还可以嵌套定义

namespace bit
{
	int rand = 10;
	int Add(int left, int right)
	{
		return left + right;
	}

	namespace xxx
	{
		int rand = 1;
	}
}

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中 

 1.3使用命名空间

我们学会如何定义一个命名空间的时候,我们也要学会如何去使用,这个时候我们就应该先认识一个符号——::,它叫域作用限定符。

mespace bit
{
	int rand = 10;
	int Add(int left, int right)
	{
		return left + right;
	}

	namespace xxx
	{
		int rand = 1;
	}
}

像这段代码,我们如何取rand的值呢,rand的值到底是10还是1呢?

int main()
{
	printf("%d\n", bit::rand);
	printf("%d\n", bit::xxx::rand);
}

bit::rand  即是取bit这个命名空间的rand,rand=10。

bit::xxx::rand  即是取bit这个嵌套命名空间xxx中的rand,  rand=1。

运行结果如下:

2.流插入和流提取

2.1流提取

这就很好奇了,在我们学习C语言中好像从来没学过流插入和流提取,我们只学过标准输入流stdin

和标准输出流stdout 也就是我们在写C语言代码时包含的头文件<stdio.h>

那我接下来介绍一下流插入和流提取

这显示cout和endl未声明的标识符,其实啊 cout和endl是在std这个标准库中,那我们该如何修改我们的代码呢?

#include <iostream>
using std::cout;
using std::endl;

int main()
{
	int i = 1;
	cout << i << endl;
	return 0;
}

#include <iostream>定义了标准输入,输出流对象

cout是全局的流对象,endl是特殊的C++符号,表示换行输出

<<是流提取运算符

输出结果如下:

2.2流插入

在C语言中,我们学过一个scanf函数

#include <stdio.h>
int main()
{
     int a = 0;
     scanf("%d",&a);
     printf("%d ", a);
     return 0;
}

在C++中我们有个更方便的关键字——cin,与scanf的作用一样

#include <iostream>
using namespace std;
int main()
{
	int a;
	cin >> a;
	cout << a << endl;

}

>>是流插入运算符。

cin也是std标准库里,所以我们要using namespace std。

2.3重点

重点!cin和cout可以自动识别类型

#include <iostream>
using namespace std;
int main()
{
	int a;
	double b;
	cin >> a >> b;
	cout << a << " " << b << endl;
	return 0;

}

这不像scanf当我们要输入小数的时候要用%lf,输入单个字符的时候要用%c,在C++中用cin是不是很方便!不需要写类型直接cin提取

关于C++中流插入和流提取为什么能自动识别类型的原因,我后期会单独出一期讲解为什么能自动识别类型!

以上就是全篇内容了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值