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?string.h?
5条答案
按热度按时间s2j5cfk01#
strlen()属于哪个库?它属于cstring?还是string?
.
cstring
和string
都不是 * 库 *,它们是 * 头文件 *,定义了各种函数和类的 * 接口 *。C语言标准规定
strlen
函数在头文件<string.h>
中声明。在C++中,包含<string.h>
会将strlen
放入全局命名空间,而包含<cstring>
会将strlen
放入std
命名空间。strlen
函数的实际 * 实现 * 在C标准库中(在某些平台上也称为libc
或CRT
)。通常,它在链接时与可执行文件链接。为什么它不包含库字符串或cstring?
在你的编译器和工具链中,头文件
<iostream>
碰巧包含了<cstring>
,这意味着任何包含前者的代码也可以免费获得后者。这是一个实现细节,不应该依赖它--如果你用另一个编译器编译代码,你可能会突然发现自己陷入了编译器错误的海洋。正确的做法是在这里也包含
<cstring>
;即使您的特定编译器不需要,但其他编译器可能需要。brgchamk2#
要使用
strlen()
,您需要包含<cstring>
头文件:这就是我一直在寻找的答案,但我在这里没有找到直接的答案。
kzipqqlq3#
函数
strlen()
在头文件<string.h>
中声明。从GNU C Library。
7gs2gvoe4#
jobtbby35#
这个程序将打印值11,这是字符串“Hello World”的长度。字符串存储在一个名为char的数据类型的数组中。通过搜索数组中的第一个空字符来找到字符串的结尾。
来自GNU C库