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

相关推荐
繁华似锦respect2 分钟前
C++ & Linux 中 GDB 调试与内存泄漏检测详解
linux·c语言·开发语言·c++·windows·算法
锡兰_CC7 分钟前
无缝触达,卓越体验:开启openEuler世界的任意门
服务器·网络·数据库·c++·图像处理·qt·nginx
新华经济19 分钟前
合同管理系统2025深度测评:甄零科技居榜首
大数据·人工智能·科技
王燕龙(大卫)22 分钟前
滑动窗口问题记录
c++
不会代码的小猴28 分钟前
C++的第十二天笔记
开发语言·c++·笔记
橘子真甜~30 分钟前
C/C++ Linux网络编程10 - http协议
linux·服务器·网络·c++·网络协议·http
黑客思维者40 分钟前
招商银行信用卡AI客服系统:从0到1实战笔记
大数据·人工智能·笔记
蜗牛love天空1 小时前
bfs广度优先搜索-二叉树遍历
c++
刘家炫1 小时前
C++ 中的模版元编程
c++·现代c++·模版元编程
十五年专注C++开发1 小时前
async_simple:一个轻量级C++异步协程框架
开发语言·网络·c++·boost·asio