为什么c++中用string定义字符串不能使用strlen计算字符串长度呢

img


为什么c++中用string定义字符串不能使用strlen计算字符串长度呢?

  • strlen 的入参是 char * , 你可以将 string 转成 char *, 使用string类的 c_str() 转化
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    string s = "hello";
    cout<<strlen(s.c_str()); // string 转成 char *
    return 0;
}
  • string 可以直接使用它的方法计算长度
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    string A  = "Hello, world!";
    cout<< A.size() <<endl;
    cout<< A.length() <<endl;
}

strlen只能针对char数组字符串,而string实际是个类,里面封装了字符数组。但这个类本身并不支持strlen,类已经提供了相应的字符串长度计算函数length(),所以改为 int b = a.length();就行了
既然已经是C++了,就尽量用C++的知识吧

C++ 中是string 类可以直接通过 实例使用 size() 或者 length ,
string a = "abcdefg"
int b = a.size();
b=a.length();

如果你非的要用strlen , 可以调用c_str() ,把string 转换为 char *
例如:
b=strlen(a.c_str());

以上得出的效果都是一样的

这么改:int b = a.length();
strlen只能用char数组
望采纳

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^