【C++小语法技巧】命名空间和输入输出

发布于:2024-05-15 ⋅ 阅读:(159) ⋅ 点赞:(0)

在使用C语言编程过程中,C语言的要求之严格,编程过程之繁琐,大同小异的重复性工作,令C++之父使用C语言编程时也深受其扰,于是乎C++兼容C小语法诞生了

一、命名空间域(解决C语言中命名冲突)

1.定义命名空间(相当于把一块地圈起来)

形式:namespace + 命名空间名

namespace std(标准命名空间):包含C++标准库中的所有内容

代码示例

namespace yang
{
	int x=0;//定义变量
	//定义函数
	int Add(int x,int y)
	{
		return x + y;
	}
	//自定义类型
	struct Student
	{
		int num;
		char name[20];
	};
	//嵌套命名空间
	namespace bit
	{
		int x = 0;
	}
}

可以定义变量、函数、自定义类型,可以嵌套


2.作用域符::

可以访问想要访问的作用域里面的内容


为什么命名空间域可以解决命名冲突问题呢?首先我们需要了解编译原则

3.编译原则-默认查找顺序

(1)当前局部域(自家的菜地)

(2)全局域(野外的地,谁都可以用)

问:默认查找会进入命名空间里面找吗?

答:No,命名空间没有展开(邻居的菜地,未经允许不可入内)。


如何才能进入命名空间?需要展开命名空间

4.展开命名空间

展开方式

(1)全展开 

注:平常练习可以用,在大项目中不推荐用,以免造成命名冲突

(2)指定展开某一个命名空间

(3)指定访问

代码示例:

#include<iostream>
namespace yang
{
	int x = 10;//定义变量
	//定义函数
	int Add(int x,int y)
	{
		return x + y;
	}
	//自定义类型
	struct Student
	{
		int num;
		char name[20];
	};
	//嵌套命名空间
	namespace bit
	{
		int x = 20;
	}
}
namespace zhang
{
	int x = 30;
}
using namespace zhang;//指定全展开zhang

int main()
{
	printf("x=%d\n",yang::x);//指定访问
	printf("x=%d\n", yang::bit::x);//指定访问
	printf("x=%d\n", x);
}

运行结果:


二、输入和输出

输入:cin>>(流提取)

输出:cout<<(流插入)

C++兼容C,C语言的输入和输出通常使用 scanf() 和 printf() 函数C++也可以用,这些函数语法相对复杂,且对数据类型有一定的限制。例如,scanf() 函数在读取字符串时需要指定缓冲区的大小,否则可能会导致缓冲区溢出等安全问题。

C++的I/O流的优势在于支持多种数据类型,而不仅仅是基本数据类型。例如,我们可以使用 std::cin 和 std::cout 来读取和写入字符串、数组、自定义类型等。这使得C++的I/O功能更加灵活和强大。

代码示例:

#include<iostream>
using namespace std;
int main()
{
	int x = 10;
	double y = 10.5;
	cout << "x=" << x << endl;//"x="字符串可以直接输出,endl是换行
	cout << "y=" << y << endl;
	int a = 0;
	double b = 0;
	cin >> a;
	cin >> b;
	cout << "a=" << a << endl;
	cout << "b=" << b << endl;
	return 0;
}

运行结果:

欢迎大家一起学习交流


网站公告

今日签到

点亮在社区的每一天
去签到