多语言展示
当前在线:261今日阅读:113今日分享:31

C++中string和string.h的作用和区别

C++中string和string.h的作用和区别#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类半点联络也没有,所以并非的“晋级版别”,他们是毫无 联络的两个头文件。要抵达楼主的目的,比如一同:#include < string .h >#include < string >using namespace std;或许#include < cstring >#include < string >C++中string和string.h的作用和区别(2)笑谈(来自高 质量++)C++标准库很大。非常大。难以置信的大。如何个大法?这么说 吧:在C++标准中,关于标准库的标准说明占了密密麻麻300 多页,这还不包含 标准C 库,后者只是'作为参看'(老实说,原文便是用的这个词)包 含在C++库中。当然,并非总是越大越好,但在如今的情况下,确实越大越好, 因为大的库会包含许多的功用。标准库中的功用越多,开发自个的应用程序时能 凭仗的功用就越多。C++库并非供应了悉数(很明显的是,没有供应并发和图形 用户接口的支撑),但确实供应了许多。几乎任何事你都可以求助于它。在归纳 标准库中有些啥之前,需要介绍一下它是怎样组织的。因为标准库中东西如此 之多,你(或象你相同的其他啥人)所选择的类名或函数名就很有可以和标准 库中的某个名字相同。为了避免这种情况所构成的名字冲突,实习上标准库中的 悉数都被放在名字空间std 中(参见条款28)。但这带来了一个新问题。许多现 有的C++代码都依赖于运用了多年的伪标准库中的功用,例如,声明在,,等头文件中的功 能。现有软件没有关于运用名字空间而进行描写,如果用std 来包装标准库致使 现有代码不能用,将是一种廉耻举动。(这种釜底抽薪的做法会让现有代码的程 序员说出比'廉耻' 更尖锐的话)慑于被激怒的程序员会发作的损坏 力,标准委员会决定为包装了std 的那有些标准库构件创立新的头文件名。生成 新头文件的方法只是是将现有C++头文件名中的。h 去掉,方法本身不重要,正 如结尾发作的效果不一致也并不重要相同。所以变成了,变成了,等等。关于C 头文件,选用相同的方法,但在每个名字前还要添加一个c.所以C 的变成了,变成了,等等。结尾一点是,旧的C++头文件是官方所敌对运用的(即 ,明晰列出不再支撑),但旧的C 头文件则没有(以坚持对C 的兼容性)。实习 上,编译器制造商不会间断对客户现有软件供应支撑,所以可以估量,旧的C++ 头文件在将来几年内仍是会被支撑。所以,实习来说,下面是C++头文件 的现状:旧的C++头文件名如将会继续被支撑,尽管 它们不在官方标准中。这些头文件的内容不在名字空间std 中。新的C++ 头文件如包含的根本功用和对应的旧头文件相同,但头文件的 内容在名字空间std 中。(在标准化的过程中,库中有些有些的细节被修改了, 所以旧头文件和新头文件中的实体不一定完全对应。)标准C 头文件如继续被支撑。头文件的内容不在std 中。具有C 库功用 的新C++头文件具有如这样的名字。它们供应的内容和相应的旧C 头文件相同,只是内容在std 中。所有这些初看有点怪,但不难习气它 。最大的应战是把字符串头文件理理解:是旧的C 头 文件,对应的是依据char*的字符串处置函数;是对应 于旧C 头文件的std 版别;是包装了std 的C++头文件, 对应的是新的string 类。如果能掌握这些(我相信你能),其他的也就 简略了。
推荐信息