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 函数的行为。

相关推荐
勇往直前plus2 分钟前
ElasticSearch详解(篇一)
大数据·elasticsearch·jenkins
春蕾夏荷_72829772513 分钟前
c++ easylogging 使用示例
c++·log·easylogging
syt_biancheng17 分钟前
Day3算法训练(简写单词,dd爱框框,3-除2!)
开发语言·c++·算法·贪心算法
自然数e1 小时前
C++多线程【线程管控】之线程转移以及线程数量和ID
开发语言·c++·算法·多线程
2401_861277552 小时前
软考程序员2016年上半年二叉排序树案例题解答
c语言·决策树·链表
一只小青团3 小时前
Hadoop之HDFS
大数据·hadoop·分布式
ITVV3 小时前
hadoop-3.4.1 单机伪部署
大数据·linux·hadoop
Elias不吃糖3 小时前
epoll 事件全集、每个事件的含义、哪些事件在实际服务器中最常见、哪些会组合出现
linux·c++·event
AA陈超3 小时前
ASC学习笔记0017:返回此能力系统组件的所有属性列表
c++·笔记·学习·ue5·虚幻引擎
小杜谈数3 小时前
企业BI建议--数据治理平台
大数据