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
#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