当前位置: 首页 > 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.lqws.cn/news/444853.html

相关文章:

  • AI Agent与Agentic AI:原理、应用、挑战与未来展望
  • C++11 lambda 表达
  • c++读写锁
  • CppCon 2017 学习:folly::Function A Non-copyable Alternative to std::function
  • AWK在网络安全中的高效应用:从日志分析到威胁狩猎
  • 基于Python的机动车辆推荐及预测分析系统
  • GRBL_UNO R3编译下载
  • 2025虚幻引擎文件与文件夹命名规律
  • 质检滞后?物料浪费?MES系统破解传统制造七大死结
  • 火山引擎TTS使用体验
  • VAE:变分自编码器
  • CHATERM AI:开启云资源氛围管理新篇章!
  • C++位图
  • 数据结构 6(算法)
  • Python 开发环境全栈隔离架构:从 Anaconda 到 PyCharm 的四级防护体系
  • GNSS介绍
  • 李宏毅《生成式人工智能导论》| 第1讲:什么是生成式人工智能
  • 可口可乐的营销转型如何促成Smartwater的新广告活动
  • 攻防演练:1.木马后门文件演练
  • 选择标签词汇功能(单选多选),在文本框展示
  • JS红宝书笔记 8.2 创建对象
  • 使用Dagster资产工厂模式高效管理重复ETL任务
  • 257. 二叉树的所有路径(js)
  • JavaEE->多线程2
  • 使用Haporxy搭建Web群集
  • 网页后端开发(基础4--数据库MySQL)
  • 第一章 空间解析几何与向量代数 ~ 向量的数量积与向量积
  • Linux head 命令
  • 穿不了 NAT 怎么办?用 TURN Server 把墙搬走!
  • 《Go语言圣经》map