类似#include<string>与#include<string.h>等头文件的区别

    

  标准的C++头文件没有.h扩展名,带有.h的头文件一般都是C语言的。例如#include<iostream>是C++的头文件,要使用更新的编译器.,#include<iostream.h>是C的头文件。对于C中的每一个头文件,C++标准库中都有一个不带“.h”扩展名的头文件与其相对应。但后者的很多内容都存放进了“std”名字空间中。也有些C++的头文件通过加上c的前缀表示来自于c,例如cmath就是由math.h变来的。

  但是string比较特殊。因为C++中本身就有一个名叫string的类,所以对于原来C中的string.h与其对应就不是string而是cstring .所以string与string.h没有任何关系,是毫无关系的两个头文件。三者的区别如下:
  <string.h>是旧的C 头文件,对应的是基于char*的字符串处理函数;
  <cstring>是对应于旧C 头文件的std 版本;
  <string>是包装了std 的C++头文件,对应的是新的string 类。

  命名空间std的辨析:

  using namespace std //使用名字空间(使用所有)

  using namespace std::cout//只使用cout

如不用using,则在代码前可以用sdt::cout<<表示使用的是std中的cout。

  实例解析:

  #include<iostream.h>//必须要加上.h
  void main()
  {
    cout<<"Right?"<<endl;
  }

  #include<string>
  #include<iostream>//此处必须去掉.h
  usingnamespace std ;
  void main()
  {
    string s;
    getline(cin,s);
    cout<<"Right?"<<endl;
  }  

iostream.h里面定义的所有类以及对象都是在全局空间里,所以你可以直接用cout   
但在iostream里面,它所定义的东西都在名字空间std里面,所以你必须加上   
using namespace std才能使用cout。

posted on 2015-11-10 17:25  寒若雪  阅读(276)  评论(0编辑  收藏  举报