c++ - 在 g++ 编译器中使用 strlen 获取数组的长度

标签 c++ string cstring strlen

有人可以解释为什么我在使用以下 g++ 编译器编译源代码时出现此错误

#include <cstdio>
#include <string>

using namespace std;

int main()
{
    char source_language[50];


    scanf("%16s\n",source_language);

    int length = sizeof(source_language);
    int sizeofchar = strlen(source_language);
    printf("%d\n",sizeofchar);
}

这给了我以下错误

test.cpp:在函数“int main()”中:

test.cpp:31: 错误:“strlen”未在此范围内声明

当我更改 #include <string>进入#include <string.h>#include<cstring> ,它工作正常,我需要弄清楚使用 #include<string> 有什么区别和 #include<string.h> .非常感谢任何帮助

最佳答案

您正在尝试使用 strlen函数,在 string.h 中声明(或者,作为 std 中的命名空间 cstring 的成员)。所以,为了使用 strlen您应该包括这两个 header 之一。

#include <string>变体不起作用仅仅是因为 string是一个完全不相关的特定于 C++ 的头文件,它与 C 标准库字符串函数完全无关。是什么让您期望它会起作用?

关于c++ - 在 g++ 编译器中使用 strlen 获取数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2258561/

相关文章:

c++ - 任务按处理时间排序时,openMp动态调度和LPT调度一样吗?

c++ - 从第三方代码检查库版本

string - 将字符串转换为整数,以便可以将数值相加

string - 在 Go 中将字符串转换为整数类型?

r - 如何从 R 向量中的每个元素中删除最后 n 个字符

c++ - 使用使用 C 样式字符串作为 OUT 参数的 WinAPI 函数

c - 在数组中搜索字符串

c++ - 用 vector 模拟行星轨道

c++ - 将 256 色位图转换为 RGBA 位图

c++ - 调用 UpdateData(TRUE) 后 CString 值发生变化