BX14 2023-03-08 14:05 采纳率: 95.7%
浏览 57
已结题

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

img


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

  • 写回答

5条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-03-08 14:08
    关注
    • 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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 快乐鹦鹉 2023-03-08 14:08
    关注

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

    评论 编辑记录
  • boonion 2023-03-08 14:15
    关注

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

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

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

    评论
  • 我爱OJ 2023-03-08 14:46
    关注

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

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-12 19:51
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

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

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!(相关搜索:java程序)
  • ¥15 linux tsi721的驱动编译后 insmod 提示 报错
  • ¥20 multisim测数据
  • ¥15 求无向连通网的所有不同构的最小生成树
  • ¥15 模拟器的framebuffer问题
  • ¥15 opencv检测轮廓问题
  • ¥15 单点式登录SSO怎么爬虫获取动态SSO_AUTH_ACCESS_Token
  • ¥30 哈夫曼编码译码器打印树形项目
  • ¥20 求完整顺利登陆QQ邮箱的python代码
  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL