注册 登录
编程论坛 C++教室

[分享]头文件string与string.h的区别

xchxp321god 发布于 2007-08-29 08:55, 2536 次点击

一般一个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名字空间的版本。

5 回复
#2
aipb20072007-08-29 17:48
  嗯!
#3
duffebear2007-09-02 15:45
3ku
#4
feier75012008-03-07 19:28
回复 1# 的帖子
C++里的是string类,C里的是函数。
#5
leeco2008-03-08 01:02
[bo]以下是引用 [un]xchxp321god[/un] 在 2007-8-29 08:55 的发言:[/bo]

一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h,在新标准后的标准库中都有一个不带“.h”扩展名的相对应。。。

这个结论你怎么得到的?除了iostream.h你还能举例吗?
我也有一个类似的结论,是“一般一个C++的老的带“.h”扩展名的库文件,在新标准后的标准库中都有一个不带“.h”扩展名的并且加上首字符c的相对应”
这样一来string.h和cstring的对应就不特殊了,而是理所应当的。
这时你可能质问我,除了string.h你还能举例吗?
我能 stdio.h ->cstdio , stdlib.h -> cstdlib , math.h -> cmath ,time.h -> ctime , ctype.h -> cctype
#6
lyc53055622008-03-09 13:15
楼主说的不错,原来以为所有后面加.h的都包含有std名字空间,哈,现在长知识了~谢谢了哈
1