gpt4 book ai didi

c++ - 哪个 C++ 头文件声明了 strlen?

转载 作者:IT老高 更新时间:2023-10-28 22:10:10 36 4
gpt4 key购买 nike

strlen() 属于哪个库?

它是否属于cstring?或 string?

我尝试了以下代码,它确实有效:

include <iostream>
using namespace std;
//withou include<string.h>

int main() {
char * str="abc";
cout<<strlen(str);
}

我设置 str 等于 3 并给出正确答案 3。

为什么不包含库字符串或cstring就可以工作?

我应该在其中包含 cstring 或 string 吗?字符串.h?

最佳答案

Which library does strlen() belong to? Does it belong to cstring? or string?

两者都没有。 cstringstring不是,它们是头文件,它们定义了各种函数和类的接口(interface)

C 语言标准规定 strlen函数在头文件<string.h>中声明.在 C++ 中,包括 <string.h>名额 strlen进入全局命名空间,同时包含 <cstring>而是放置 strlen进入std命名空间。

strlen 的实际实现函数位于 C 标准库中(在某些平台上也称为 libcCRT)。通常,这会在链接时与您的可执行文件链接。

Why it works without including library string or cstring?

在您的特定编译器和工具链中,恰好头文件 <iostream>包括<cstring>进入它,这意味着任何包含前者的代码也可以免费获得后者。这是一个实现细节,不应该依赖它——如果你用另一个编译器编译你的代码,你可能会突然发现自己陷入了编译器错误的海洋。

正确的做法是还包括 <cstring>这里;即使您的特定编译器不需要它,但其他编译器可能需要它。

关于c++ - 哪个 C++ 头文件声明了 strlen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19107845/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com