命名空间和cin,cout,外加string

当我们写很长的代码的时候,有时候写的代码就会出现重名的时候,尤其是当小组合作完成一个项目的时候,就更有可能出现重名的情况,那怎么办呢
可以用命名空间来解决
一:命名空间:放代码的地方,防止重名
防止重名:比如一个特殊集团的名字,非常罕见,和别人重名的几率很小,而隶属于这个集团的成员们的名字其实也是隶属于这个集团的名字,那就更
不可能重名了,这就是命名空间的意义
定义格式:关键字namespace   命名空间标识符;
语法:namespace 命名空间标识符
{
    命名空间成员(变量,函数。。。。。)
}

注意:一:命名空间标识符要符合标识符命名规则
     二: 命名空间可以在全局去写,也可以在局部去写,就是不能在函数和类内部定义

namespace  命名空间标识符
{
    namespace  命名空间标识符
    {

    }
}
//可以这样写,另外也说明了命名空间可以嵌套使用
int main()
{
    namespace  命名空间标识符
    {

    }
}
//是不能这样写的,因为这样就是在函数内部定义了,是不被允许的


三:作用域不用加分号定义域用加分号
四:命名污染:命名空间标识符重名了


访问
using namespace 命名空间标识符;//这么写之后,用作用域去访问命名空间里面的成员
作用域符号   ::
可以理解为:前面::后面     “前面的后面”
张三::老婆      “张三的老婆”
**很多人都有老婆,如果你不加这个作用域,怎么知道是谁的老婆

举个例子:namespace YU
{
    int num;
}
int num;
using namespace YU;
int main()
{
    int num;
    num = 0;//不知道是谁的num,发现是局部的,加上::变成::num可以访问外边的全局变量num,那么命名空间里的num怎么访问呢,可以变成YU::num
    //作用在YU里面的num嘛,显而易见,不过仅仅这样是不行的,要在前面加一个using namespace YU,意为使用这个命名空间,不然这个命名空间是关闭的
    //因为我们只是给它定义了,当我们要使用它的时候,就要加个using namespace...
    return 0;
}

在命名空间中写个函数成员,然后去访问:

namespace YU
{
    int num;
    void test()
    {

    }
}
int num;
using namespace YU;
int main()
{
    YU::num= 0;
    YU::test()= 0;
    return 0;
}

在命名空间中定义函数fun,但是要定义的函数太长了,不想再命名空间写,想在命名空间外写,这要怎么办,这么才能在外面写,然后还知道这个函数
隶属于这个命名空间
n

amespace YU
{
    int num;
    void fun();
}

void YU:: fun()//加一个作用符就完事了
{

}
using namespace YU;
int main()
{
    YU::num = 0;
    
    return 0;
}


嵌套命名空间怎么访问:

namespace YU
{
    int num;
    void fun();
    namespace  thank
    {
        int val;//怎么去访问val,用两个作用符就完事了
    }
}

void YU::fun()//加一个作用符就完事了
{

}
using namespace YU;
using namespace YU::thank;//这样就能访问嵌套命名空间的成员了,加个using namespace 就完了,用哪个就using 哪个就完事了
using YU::thank::val;//或者这样写,直接就能访问了,但是只能访问val,不代表可以访问其他的,除了val其他的都访问不了,所以还是要using
//命名空间整体
int main()
{
    YU::num = 0;
    YU::thank::val;//用两个作用符就完事了

    return 0;
}

命名空间取别名

namespace  jihfohowhfouhosndofhosbo //这太长了,怎么办呢?直接取别名
namespace  jihfohowhfouhosndofhosbo = 21;//jihfohowhfouhosndofhosbo 和21是一样的。

    cin和cout(c++里面的输入输出)
    cin 输入 == == = >scanf()
    cout输出 == == >printf()
    其实还是有本质区别的,scanf 和printf是函数,cin和cout严格来说应该是命名空间里的成员,
    在使用cin和cout之前要写一个头文件:#include<iostream>//c++中标准输入输出头文件
    using namespace std://cin 和cout 是std这个命名空间中的成员

使用cin和cout 之前做的准备工作分为两种:

一:#include<iostream>                   二:#include<iostream>

using namespace std :                        using std::cin;
                                             using std::cout;
//区别就在于是想访问std中的cin,cout ,还是想访问std中的所有成员

                                             和cin和cout相对应的是endl  意为结束且换行

                                                 毕竟是命名空间里面的成员,所以在使用cin和cout之前,也要加上using.....
                                                

 using std::cin;
 using std::cout;
 using std::endl;
std::cin >> a >> b >> c >> f;
std::cout << a << b << c << d << f << endl;
//可以不加endl,不加就是没有结束换行而已,箭头方向与输入输出相反,输出箭头就是内

                                             string的基本使用:
                                                 

string 实际上是一个c++的类,字符串类
                                                 在使用string之前要加上:
                                                 #include<iostream>
                                                 using namespace std;
                                                 #include<string>

                                             int main()
                                             {
                                                 string str = "abnce"//加上头文件<string>,这样就可以把string当成一个类型使用了
                                                     str.length();
                                                 return 0;
                                             }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘指

创作不易,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值