哪个库strlen()属于哪个?
它属于cstring吗?还是string?
我尝试了以下代码,它确实有效:
include <iostream>
using namespace std;
//withou include<string.h>
int main() {
char * str="abc";
cout<<strlen(str);
}
Run Code Online (Sandbox Code Playgroud)
我设置str等于3并给出正确答案3.
为什么它不包括库字符串或cstring?
我应该在那里包含cstring或string吗?STRING.H?
Ada*_*eld 18
strlen()属于哪个库?它属于cstring吗?还是字符串?
都不是. cstring和string不库,它们被头文件,其定义了接口的各种函数和类.
C语言标准说该strlen函数在头文件中声明<string.h>.在C++中,包括<string.h>地方strlen到全局命名空间,包括同时<cstring>代替地方strlen到std命名空间.
实际执行中的strlen功能是在C标准库(又名libc或CRT在某些平台上).通常,这在链接时与您的可执行文件链接.
为什么它不包括库字符串或cstring?
在您的特定编译器和工具链中,只有头文件<iostream>包含<cstring>在其中,这意味着包含前者的任何代码也可以免费获得后者.这是一个实现细节,不应该依赖 - 如果您使用其他编译器编译代码,您可能会突然发现自己处于编译器错误的大海中.
正确的做法是也包括<cstring>在这里; 即使您的特定编译器没有必要,也可能需要其他编译器.
MBI*_*MBI 10
要使用strlen(),您需要包含cstring头文件.
#include <cstring>
Run Code Online (Sandbox Code Playgroud)
这是我正在寻找的答案,但在这里找不到直接的答案.