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?
答案 0 :(得分:17)
strlen()属于哪个库?它属于cstring吗?还是字符串?
都不是。 cstring
和string
不是库,它们是头文件,它们将接口定义为各种函数和类。
C语言标准表示strlen
函数在头文件<string.h>
中声明。在C ++中,包括<string.h>
将strlen
放入全局命名空间,而包括<cstring>
则将strlen
放入std
命名空间。
strlen
函数的实际实现位于C标准库中(在某些平台上称为libc
或CRT
)。通常,这在链接时与您的可执行文件链接。
为什么它不包括库字符串或cstring?
在您的特定编译器和工具链中,只有头文件<iostream>
包含<cstring>
,这意味着包含前者的任何代码也会免费获得后者。这是实现细节,不应该依赖 - 如果您使用其他编译器编译代码,您可能会突然发现自己处于编译错误的大海中。
正确的做法是在此处加入<cstring>
;即使您的特定编译器没有必要,也可能需要其他编译器。
答案 1 :(得分:10)
要使用strlen(),您需要包含cstring头文件。
#include <cstring>
这是我正在寻找的答案,但在这里没有找到直接答案。
答案 2 :(得分:7)
函数strlen()在头文件string.h中声明
答案 3 :(得分:-1)
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char *pointer1="Idle hands are the devil's workshop.";
int length;
length=strlen(pointer1);
char *pointer2;
pointer2=new char(length+1);
strcpy(pointer2,pointer1);
cout<<"pointer 2:"<<pointer2;
delete[] pointer2;
return 0;
}
答案 4 :(得分:-3)
#include <stdio.h>
#include <string.h>
int main(void)
{
char *string = "Hello World";
printf("%lu\n", (unsigned long)strlen(string));
return 0;
}
该程序将打印值11,即字符串“Hello World”的长度。字符串存储在名为char的数据类型的数组中。通过搜索数组中的第一个空字符找到字符串的结尾。
来自GNU C库