#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
来源:互联网 发布:linux init 6 reboot 编辑:程序博客网 时间:2024/04/25 14:35
在C++中经常用到#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>,但对与其区别,却一直不算太明确,恰好今天看到一篇这样的文章,就将其转来了,原文地址:http://www.cnblogs.com/charley_yang/archive/2010/12/08/1900715.html
1.从功能性的角度来讲,<iostream>包含了一系列模板化的I/O类,相反地<iostream.h>只仅仅是支持字符流。另外,输入输出流的C++标准规范接口在一些微妙的细节上都已改进,因此,<iostream>和<iostream.h>在接口和执行上都是不同的。最后,<iostream>的各组成都是以STL(Standard Template Library,标准模板库)的形式声明的,然而<iostream.h>的各组成都是声明成全局型的。
因为这些实质上的不同,你不能在一个程序中混淆使用这两个库。做为一种习惯,在新的代码中一般使用<iostream>,但如果你处理的是过去编写的代码,为了继承可以用继续用<iostream.h>就保持代码的一致性。
/////////////////////////////
<iostream>表示你使用的是标注命名空间,也就是在程序开始应该有这么一句话
using namespace std ; 这是遵循c++标准的
<iostream.h> 则没有遵循c++标准
/////////////////////////////
<string.h>是旧的C头文件,对应的是基于char*的字符串处理函数;
<string>是包装了std的C++头文件,对应的是新的strng类;
<cstring>是对应旧的C头文件的std版本。
(标准化委员会为了拉拢人心,吸引更多的人入会,决定为包装了std的那部分标准库构建新的头文件名。将现有C++头文件名中的.h去掉,所以就出现了< iostream.h> 和< iostream > 等很多双胞胎。对于C头文件,采用同样方法但在每个名字前还要添加一个C,所以C的<string.h> 变成了<cstring>。)
#include <iostream.h> 和 #include <iostream>
前一个不是c++标准中的,后一个在c++标准中
还有就是平时我们所用的两种情况,当有输出和输入流时就要注意了。
换成#include <iostream>,要加一句using namespace std;或把cout改成std::cout,end改成std::endl等等
#include <iostream.h>
c++标准化之前的使用方式.
#include <iostream>
using namespace std;
这个必须同时出现.c++标准化后推荐使用的方式.主要是因为namespace的引入.
#include <..> 是从标准库里直接提取头文件
#include ".. "是先从源文件当前目录提取头文件,再从标准库里提取。
一般自己写的文件用 " "
2.为什么下面这段代码
#include <string.h> void main() { string aaa= "abcsd d"; printf("looking for abc from abcdecd %s\n", (strcmp(aaa,"abc")) ? "Found" : "Not Found"); }不能正确执行,说是string类型没有定义
而下面:
#include <string> using namespace std; void main() { string aaa= "abcsd d"; printf("looking for abc from abcdecd %s\n", (strcmp(aaa,"abc")) ? "Found" : "Not Found"); }
这里的string编译器就认识了,但是strcmp就不认识了呢?
---------------------------------------------------------------
一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。
但唯独string特别。
问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,比如楼主提到的strcmp。
这个头文件跟C++的string类半点关系也没有,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。
要达到楼主的目的,比如同时:
#include <string.h> #include <string> using namespace std; 或者 #include <cstring> #include <string>
其中<cstring>是与C标准库的<string.h>相对应,但裹有std名字空间的版本
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- #include<iostream>与#include<iostream.h>及#inclue <string> 和 #include <string.h>的区别
- C++Primer--->#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- #include <iostream> 和#include <iostream.h> 以及include " "的区别
- #include<iostream.h>与#include "iostream.h"的区别
- #include<iostream>与#include<iostream.h>的区别
- #include <iostream>与#include <iostream.h>的区别
- #include <iostream>与#include <iostream.h>的区别
- #include<iostream>与#include<iostream.h>的区别
- #include <iostream>与#include <iostream.h>的区别
- C++中include <iostream>和include <iostream.h>的区别
- #include<iostream>和#include<iostream.h>的区别
- #include<iostream>和#include<iostream.h>的区别
- #include<iostream>和#include<iostream.h>的区别
- #include<iostream>和#include<iostream.h>的区别
- C++ #include <iostream> #include <iostream.h> #include <string.h>区别及作用
- Js为表单动态添加节点内容
- aasert()函数的用法
- 插件85:切换文本内容
- 心情不好,调节一下
- js中关于表格的操作
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- 实习面试:java工程师
- emacs 播放mp3
- cut from other papers
- Maven 项目操作
- 实用HTML,CSS和JavaScript速查表
- Android开机自启动应用开发
- 用程序代码是现房GridView的绑定
- 浮点数的存储方式 float