为什么标识符 'strlen' 未定义?

Why identifier 'strlen' is undefined?

我正在用 C++ 编写程序。当我使用 strlen 函数时,它有一条红线下划线。虽然项目构建没有错误。这就是我使用此功能的方式。 (顺便说一句,strcpy也有下划线)。

Exception::Exception(int _Line, char* _File, char* _Func, char* _Desc)
{
  Line = _Line;
  int size = strlen(_File) + 1;
  File = new char[size];
  strcpy(File, _File);
  Func = new char[size];
  strcpy(Func, _Func);
  Desc = new char[size];
  strcpy(Desc, _Desc);
}

并且我在文件的开头声明了 <cstring> 库。请告诉我如何解决这个问题?

在 VS 编辑器中为代码下划线的系统称为 IntelliSense,它使用的代码与编译器本身并不相同(或者至少几年前我上次使用它时没有使用)。有时会感到困惑。

尝试 std::strlen,重新组织代码、包含或其他内容。

正如您在 documentation for strlen() 中所读到的,strlen()string.h 中定义,C++ 对应的 std::strlen()cstring 中定义。

因此,要消除错误波浪线,请尝试添加上述 headers 之一。

#include <cstring>
...
std::strlen()