strlen() 不适用于字符串变量

strlen() not working with string variable

#include <iostream>
#include <string>
#include <cstring>


using namespace std;

int main()
{
    string b="hello";

    cout<<b;

    int c = strlen(b);

    cout << "Hello world!" <<c<< endl;
    return 0;
}

当我尝试 运行 时,出现以下错误

||=== Build: Debug in strlen (compiler: GNU GCC Compiler) ===|
C:\Users\Waters\Desktop\hellow world\strlen\main.cpp||In function 'int main()':|
C:\Users\Waters\Desktop\hellow world\strlen\main.cpp|14|error: cannot convert 'std::string {aka std::basic_string<char>}' to 'const char*' for argument '1' to 'size_t strlen(const char*)'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

strlen 是 C 中的函数,适用于 C 字符串 (char *)。

对于正确的 C++ std::string,请使用 .length() or .size() 成员函数。

事实上,大多数以 'c' 开头的标准头文件都包含 C++ 从 C 继承的函数。在您的情况下,您很可能没有任何理由使用 <cstring> 如果您已经使用 C++ 字符串。

如果您刚刚更改,您的案例将有效

string b="hello";

char* b = "hello";

请注意,C 字符串始终(应该)具有确定字符串结尾的空字符“\0”。 例如here