std::和using namespace std;

std是标准命名空间名称

相同点:

std::和using namespace std;的意思是一样的,都表示使用命名空间std;

不同点:

放在程序中的位置不同

1. using  namespace  std;头文件如果包含了#include<iostream>,那么在头文件下方写上using  namespace  std;2.std::头文件如果包含了#include<iostream>,但是没有在头文件下方写上using  namespace  std;那么在使用标准输入流时就需要加上std::比如std::cout std:: string str; std:: cin 等,否则会报错

也就是说使用了“using  namespace  std;”就没必要使用“std::”了,一般情况下两者有其一就可以了

那么,为什么有这两种用法的区别了?因为,对于命名空间,是可以自定义的,除了那些默认的自带的命名空间,我们可以更改也可以自定义,想用哪一个的时候就用哪个比如我命名了一个命名空间为cc,

namespace cc
{

fun();

}

那么我用这个命名空间时就用cc:: fun() ,

当然也可以是:

using  namespace  cc;

fun();

以代码佐证:

//std:: 和using namespace std;

#include "stdafx.h"

#include <iostream>

using namespace std ;
namespace namespace1
{
    void welcome();
}
namespace namespace2
{
    void welcome();
}
void global_welcome();
int main(int argc, char* argv[])
{
    {
      //  using namespace namespace2 ;
        //使用namespace2、std、全局三个命名空间
		namespace2:: welcome();
    }
    {
        using namespace namespace1 ;
        //使用namespace1、std、全局三个命名空间
        welcome();
    }
    global_welcome();
    //使用了std和全局两个命名空间

    return 0 ;
}
namespace namespace1
{
    void welcome()
    {
        cout<<"Welcome from namespace1.\n" ;
    }
}
namespace namespace2
{
    void welcome()
    {
        cout<<"Welcome from namespace2.\n" ;
    }
}
void global_welcome()
{
    cout<<"GlobalWelcom!\n" ;
}

  

运行结果是:






				
时间: 2025-01-12 04:21:21

std::和using namespace std;的相关文章

【转】关于“using namespace std”

对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std.这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义.其作用就在于避免发生重命名的问题. 1. 关于namespace C++引入了命名空间namespace主要解决了多个程序员在编写同一个项目中可能出现的函数等重名的现象.解决方法就是加上自己的命名空间.比如下面的例子: 1 2 3 4 5 6 7 8 9 10 11 12 1

C++ using namespace std(转载)

转载自http://www.kuqin.com/language/20080107/3532.html 感谢这位大神的解答! 以下的内容摘抄自转载的文章里面的部分内容. 早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h. 因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现:当使用<iostream>的时候,该头文件没有定义全局命名空

using namespace std

using namespace std std 是一个命名空间..不同的命名空间可以有相同的类名被定义 ..using namespace std;就是指明下面的程序使用std,如果不用这句指明的话就要用std::string(string是std空间中定义的也可以在全局空间中定义,只要名字空间不一样即可..)..否则可以默认名字空间中有std.便不用std::来修饰它是C++新标准中有的,解决多人作编大程序时名字冲突问题.比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这

(转)c++ 中的using namespace std是什么意思,什么时候用

使用std命名空间 98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题.举一个实例,请注意以下两个头文件: // one.hchar func(char);class String { ... }; // somelib.hclass String { ... }; 如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突.所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙.比如://

Error:全局变量不明确(using namespace std 与全局变量的冲突)

在用递归写八皇后时,定义了一个全局变量count,结果出现问题如下:提示全局变量不明确. 最后发现在实现文件.cpp中,我使用了using  namespace std; 解决方法: 1.使用count 的地方改成 ::count 替代(因为std命名空间下也有 std::count ,编译器不确定此处是::count 还是std::count,所以会不明确) 2.注释掉这个命名空间 3.或者改用 : using std::cout; using std::endl; using std::ci

using namespace std;的注意事项

作者:zhang.jingjing链接:转自  https://www.zhihu.com/question/26911239/answer/51503880来源:知乎 因为使用STL中 有部分名称是没有加下划线的保留标记的而在自己的源代码中用到了后会引发未定义的后果 例如: #include <algorithm> using namespace std; int main() { int max=0; } 一直我都告诫学习C++的人 以后精通了C++就不要用using namespace

关于using namespace std

[来自]http://www.cnblogs.com/uniqueliu/archive/2011/07/10/2102238.html 对于一个存在着标准输入输出的C++控制台程序,一般会在#include <iostream>的下一行发现一句话,using namespace std; 这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义.其作用就在于避免发生重命名的问题. 1. 关于namespace C++引入了命名空间namespace主要解决了多个程序员在编写同一个

C++“using namespace std;”的理解

如果程序中需要使用C++的输入(cin)或输出(cout)工具,必须提供这样两行代码: 1 #include <iostream> 2 using namespace std; //可以使用空间名称为std里面的东西 当我建立一个名为HelloWord 的C++工程时会出现这样的代码: 1 using namespace HelloWord; //可以使用空间名称为HelloWord里面的东西 C++引入名称空间namespace的目的是避免多个程序员在编写同一个项目时出现函数或变量重名的现象

(C++)浅谈using namespace std

1.<iostream>和<iostream.h> 在你的编译器include文件夹里面可以看到,二者是两个文件,里面的代码是不一样的. 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里: c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h. 因此, 当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现: 当使用<iostr