永发信息网

求<string>和<string.h>的区别

答案:1  悬赏:20  手机版
解决时间 2021-02-27 03:21
  • 提问者网友:记得曾经
  • 2021-02-26 05:25
求<string>和<string.h>的区别
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-02-26 05:41
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 类。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯