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 (strlength != '\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 函数的行为。

相关推荐
hold?fish:palm6 小时前
45 二叉树的右视图
开发语言·c++·算法
MI_farmer6 小时前
Anaconda 安装在 D 盘但虚拟环境跑到 C 盘,以及 Conda PermissionError: WinError 5 的解决方法
c语言·开发语言·conda
蓝速科技6 小时前
政务自助终端信创选型与无人值守落地方案
android·大数据·数据库·人工智能·科技·技术分享·政务
粤鼎恒业6 小时前
惠州工厂电子料回收厂家推荐:从交接单反推筛选标准
大数据·数据库·算法·硬件架构·硬件工程·pcb工艺·材料工程
ShineWinsu6 小时前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
布莱克6056 小时前
在C++中,构造函数能不能是虚函数?析构函数为什么要虚?
开发语言·c++·构造函数·析构函数·虚函数
SelectDB7 小时前
ELK 做不了的分析,我用 Doris 物化视图补上了:配置、开关与四个排错现场
大数据·数据库·数据分析
SelectDB7 小时前
Agent 日志检索慢、存储还贵?search() + VARIANT 的落地命令和几个当场踩出来的问题
大数据·数据库·数据分析
SelectDB7 小时前
ClickHouse 存日志踩过的并发坑:压测脚本、检索写法与排错命令
大数据·数据库·数据分析
SelectDB7 小时前
NESTED 怎么搜 VARIANT 里的嵌套数组:一份可直接复制的统一引擎实战笔记
大数据·数据库·数据分析