当前位置: 首页 > news >正文

C++实现手写strlen函数

 

 

要实现求字符串长度的函数,核心思路是通过指针或索引遍历字符串,直到遇到字符串结束标志 \0 。以下是两种常见的实现方式:

 

指针遍历版本

 

#include <iostream>

using namespace std;

 

// 指针方式实现strlen

size_t myStrlen(const char* str) {

    if (str == nullptr) {

        return 0; // 处理空指针情况

    }

    

    const char* ptr = str;

    while (*ptr != '\0') {

        ptr++;

    }

    return ptr - str;

}

 

int main() {

    char str[] = "Hello, World!";

    cout << "字符串长度: " << myStrlen(str) << endl;

    return 0;

}

 

 

索引遍历版本

 

#include <iostream>

using namespace std;

 

// 索引方式实现strlen

size_t myStrlen(const char* str) {

    if (str == nullptr) {

        return 0; // 空指针保护

    }

    

    size_t length = 0;

    while (str[length] != '\0') {

        length++;

    }

    return length;

}

 

int main() {

    char str[] = "C++ Programming";

    cout << "字符串长度: " << myStrlen(str) << endl;

    return 0;

}

 

 

实现说明

 

- 核心逻辑:两种实现都通过遍历字符数组,直到遇到 \0 结束标志

- 空指针处理:添加了对 nullptr 的判断,避免程序崩溃

- 返回类型:使用 size_t 类型确保非负整数返回

- 常量指针:参数使用 const char* 防止函数内部修改原字符串

 

这两种实现方式的时间复杂度都是O(n),其中n是字符串的实际长度,空间复杂度为O(1),符合C++标准库中 strlen 函数的行为。

http://www.lryc.cn/news/572457.html

相关文章:

  • LeeCode2294划分数组使最大值为K
  • SQL分片工具类
  • C#上位机通过WebApi访问WinCC
  • 图像特征检测算法ORB
  • 目标检测之YOLOV11谈谈OBB
  • 基于Uniapp+PHP的教育培训系统开发指南:网校源码实战剖析
  • 【机械视觉】Halcon—【十五、一维码(条形码)和二维码识别】
  • SpringBoot扩展——发送邮件!
  • Java求职者面试指南:Spring, Spring Boot, Spring MVC, MyBatis技术点深度解析
  • Windows 10开始菜单优化方案,如何实现Win7风格开始菜单的还原
  • 火山引擎TTS使用体验
  • 类与对象(中)(详解)
  • 多卡解决报错torch.distributed.elastic.multiprocessing.errors.ChildFailedError的问题
  • API 接口:程序世界的通用语言与交互基因
  • 【音视频】PJSIP库——示例简介、C++类说明
  • 深度学习——激活函数
  • # python正则表达式——实战学习+理论
  • 跟踪大型语言模型的思想:对语言之间共享;提前规划;cot
  • RK3588调试之旅:adbd服务配置全攻略
  • stm32之使用中断控制led灯
  • 新生活的开启:从 Trae AI 离开后的三个月
  • linux操作命令(最常用)
  • 打破物理桎梏:CAN-ETH网关如何用UDP封装重构工业网络边界
  • 大模型更重要关注工艺
  • 目标检测之YOLOV11自定义数据使用OBB训练与验证
  • Neo4j常用语法-path
  • JS红宝书笔记 8.3 继承
  • 煤矿井下Modbus转Profibus网关的传感器与PLC互联解决方案
  • 机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
  • 运维人员常用网站列表