在C++中,#include<iostream>与#include<iostream.h>的区别,前者要使用更新的编译器(其实大部分编译器多比较前卫了,除了有些搞嵌入式的用变态的编译器),后者在有些VS版本中已经不再支持了

原来iostream是C++的头文件,iostream.h是C的头文件,即标准的C++头文件没有.h扩展名,将以前的C的头文件转化为C++的头文件后,有时加上c的前缀表示来自于c,例如cmath就是由math.h变来的。

百度百科的解释:

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

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

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

#include<iostream.h>//必须要加上.hvoid 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

一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。

但唯独string特别。 
问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如楼主提到的strcmp。 
这个头文件跟C++的string类半点关系也没有,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。 
要达到楼主的目的,比如同时:

#include <string.h> 
#include <string> 
usingnamespace std; 
或者 
#include <cstring> 
#include <string> 
其中<cstring>是与C标准库的<string.h>相对应,但裹有std名字空间的版本。

最大的挑战是把字符串头文件理清楚:

<string.h>是旧的C 头文件,对应的是基于char*的字符串处理函数;<string>是包装了std 的C++头文件,对应的是新的string 类(看下文);
<cstring>是对应于旧C 头文件的std 版本。(包含std)

<string>是c++ 的头文件,其内包含了一个string类,string s1就是建立一个string类的对象 
<string.h> 的c语言的东西 并无类,所以不能 string s1

<cstring>文件实际上只是在一个命名空间std中include了 <string.h>

string和string.h以及cstring的区别相关推荐

  1. 头文件cstring、string、string.h的区别

    头文件cstring.string.string.h的区别 <string>是C++标准库头文件,使用stirng类型必须首先包含string头文件,用于字符串操作,string类型可以进 ...

  2. string类 string.h头文件 cstring头文件区别以及读取一行字符串总结

    以前一直分不清string类  string.h头文件 cstring头文件的去别,今天ce了一发才稍微弄懂了. 首先C语言中只有string.h头文件,string.h包含了一些字符数组和字符串的函 ...

  3. C\C++中头文件string与string.h的区别

    http://www.cnblogs.com/Cmpl/archive/2012/01/01/2309710.html 在C++中,#include<iostream>与#include& ...

  4. 头文件string与string.h的区别

    #include<iostream>与#include<iostream.h>的区别 在C++中,#include<iostream>与#include<io ...

  5. String、StringBuffer、与StringBuilder的区别

    原文:http://www.cnblogs.com/sevenlin/p/sevenlin_StringBuffer_StringBuilder20150806.html String.StringB ...

  6. C#中的String和string有什么区别?还有ref关键字怎么用?

    String 和 string 没有区别 string 是 String 的别名 ref 关键字一般只用于函数参数中,这个参数是 struct 类型,而不是 class 类型 因为 class 类型在 ...

  7. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  8. NULL,,String.Empty三者在C#中的区别

    (1)NULL null 关键字是表示不引用任何对象的空引用的文字值.null 是引用类型变量的默认值.那么也只有引用型的变量可以为NULL,如果int i=null,的话,是不可以的,因为Int是值 ...

  9. Java基础之String,StringBuilder,StringBuffer三者的区别

    Java基础之String,StringBuilder,StringBuffer三者的区别 目录 运行速度方面 线程安全方面 小结 1. 运行速度方面 运行速度,在这方面运行速度快慢为:StringB ...

  10. String和string的区别

    最近老看见有人在论坛上问String和string有什么区别,答案五花八门差点儿没让我背过气去,干脆放到Blog上来,论坛上就贴地址了: 首先,在一般情况下,String和string是一样的,但是他 ...

最新文章

  1. MongoDB主动撤回SSPL的开源许可申请
  2. xml文件导入mysql_如何使用XML_LOAD()将XML文件导入MySQL数据库表;功能?mysql-问答-阿里云开发者社区-阿里云...
  3. yyblog2.0 数据库开发规范
  4. 服务器间传文件$d,基于OpenSSH+WinSCP完成Windows服务器之间的文件传输
  5. 利用sql_trace跟踪一个指定会话的操作
  6. windows安装tensorflow GPU
  7. Java Queue 使用总结
  8. 开源API网关系统:Kong简介
  9. Flash Cs4安装之后打不开(启动界面一闪而过)
  10. 如何通过Matlab调用Aspen?
  11. 网页爬虫-八爪鱼Xpath自定义数字翻页
  12. 计算机发展史上一些重要的著作
  13. Tangle:不同于区块链的分布式账本
  14. Java 社区平台 - Sym 1.7.0 发布
  15. 网络电台mms地址大全(二)
  16. linux环境下java输出乱码,linux java 输出乱码问题
  17. fMRI与MRI区别+名词解释+MRI中T1和T2的含义与区分
  18. INSERT INTO SET
  19. 同步和异步的区别和优缺点
  20. centos7搭建代理服务器tinyproxy

热门文章

  1. Linux的运行级别/模式
  2. java mysql 博客园_JAVA基础--MySQL
  3. hql中获取前一天的数据_如何使用DNS和SQLi从数据库中获取数据样本
  4. micropython常用模块有那个_Python17个常用内置模块总结
  5. github issue 搜索_启用 GitHub Issue 作为博客留言系统 - Farseerfc的小窝
  6. 动态规划实战16 leetcode-198. House Robber
  7. CMU 15-213 Introduction to Computer Systems学习笔记(22) Synchronization: Advanced
  8. CMU 15-213 Introduction to Computer Systems学习笔记(2) Bits,Bytes,Integer
  9. java replaceall删除中括号和内容_replaceAll()如何同时替换多个不同的字符串(或多个符号)...
  10. php 126怎么设置发送邮箱验证码,邮箱发送验证码(示例代码)