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

相关推荐
忆~遂愿10 分钟前
CANN ATVOSS 算子库深度解析:基于 Ascend C 模板的 Vector 算子子程序化建模与融合优化机制
大数据·人工智能
island131412 分钟前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
wregjru14 分钟前
【QT】4.QWidget控件(2)
c++
浅念-19 分钟前
C++入门(2)
开发语言·c++·经验分享·笔记·学习
小羊不会打字27 分钟前
CANN 生态中的跨框架兼容桥梁:`onnx-adapter` 项目实现无缝模型迁移
c++·深度学习
Max_uuc36 分钟前
【C++ 硬核】打破嵌入式 STL 禁忌:利用 std::pmr 在“栈”上运行 std::vector
开发语言·jvm·c++
近津薪荼38 分钟前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统(初阶)
大数据·linux·运维·服务器·c++·人工智能·算法
Once_day2 小时前
C++之《程序员自我修养》读书总结(1)
c语言·开发语言·c++·程序员自我修养