当前位置: 首页 > news >正文

【C++】string类--常见接口及其模拟实现

遍历

1.1. 下标+operator

代码语言:javascript

AI代码解释

char& operator[](size_t pos) { assert(pos < strlen(_str)); return _str[pos]; } const char& operator[](size_t pos) const { assert(pos < strlen(_str)); return _str[pos]; } int main() { string s1("hello world"); for (int i = 0; i < s1.size(); ++i) { cout << s1[i]; } return 0; }


1.2. c_str

也就是说c_str返回的值指向该字符串并且包含“\0”的字符序列,使用c_str( )来打印字符串,当碰到“\0”时就停止(这是因为C/C++中字符串处理函数(如**printf**,cout**,**strcpy**等)都遵循一个约定:将以null字符('\0')作为字符串的结束标志**)。

代码语言:javascript

AI代码解释

const char* c_str() const { return _str; }


1.3. 迭代器

迭代器:string的迭代器的底层其实就是一个char*的原生指针,所以使用string迭代器只需要像使用普通指针一样即可。但是其他容器的底层不应该否是原生指针。

代码语言:javascript

AI代码解释

typedef char* iterator; typedef const char* const_iterator; iterator begin() { return _str; } iterator begin() const { return _str; } iterator end() { return _str + _size; } iterator end() const { return _str + _size; }

然后我们使用迭代器来进行字符串的遍历:

代码语言:javascript

AI代码解释

int main() { s::string s1("Hello World"); s::string::iterator it = s1.begin(); while (it != s1.end()) { cout << *it << ""; it++; } }

PS:这个地方要注意的是要注意使用的是C++string类中的迭代器还是我们自定义类string中的迭代器。


http://www.jsqmd.com/news/484073/

相关文章:

  • 最新!2026年OpenClaw(Clawdbot)云端5分钟集成及使用方法
  • 发光二极管(LED)介绍
  • 解决Notepad++绿色版右键菜单失效的3种方法(注册表+bat+权限问题排查)
  • 探索基于出行链的电动汽车负荷预测模型
  • 2026年热销榜单:十大动环监控系统推荐,让你的机房管理更高效
  • 【MySql】navicat连接报2013错误
  • 低查重不是梦!AI教材写作工具,助力快速且高质量完成教材编写!
  • Go 语言实现 Function Calling 服务端:从协议解析到工具执行
  • 【FFmpeg】H.264 格式分析 ② ( 网络抽象层单元 NALU NALU 功能结构 VCL 视频编码层 NAL 网络提取层 H.264 封装模式 - annexb 模式 )
  • C++ 模板编程的实战应用
  • HCIP-AI-EI Developer V2.5 第二章笔记
  • 剪映专业版教程:制作扇形开合效果
  • JavaScript性能优化实战宗弊
  • 【Flask】四、flask连接并操作数据库
  • crontab 定时任务从入门到上线(语法 + 排障)
  • 基于RRT的路径规划算法在多种移动设备上的实现
  • 探索MATLAB中多个无人船协同围捕控制算法
  • 探索 BP 神经网络 PID 控制在 Simulink 中的仿真之旅
  • JavaScript性能优化实战烂文
  • 贾子认知理论与全球主流AI大模型十四项核心弊端:诊断与根治方案
  • Linux 安装 MySQL 与远程连接排障(yum 方案)
  • Scholar-Agent:你的全自动文献调研工具
  • VF控制的仿真与代码生成
  • 拒绝Python依赖!SpringBoot 3 + ONNX Runtime 打造纯Java版YOLOv8通用检测服务:从模型转换到高并发API封装的全链路实战
  • 虚拟机-持续部署流水线最简工具yunedit-ssh
  • 深度解析:安卓开发工程师进阶之路——聚焦鸿蒙、KMP与架构优化
  • 基于动态窗口法(DWA)的路径规划算法实现
  • 【底层心法】彻底抛弃虚拟串口!撕开 USB 协议栈黑盒,用 Custom HID 打造 1000Hz 零延迟的桌面智能外设
  • 深耕移动技术,助力民航数字化:解析高要求 Android 开发工程师的角色与能力
  • 双极性SPWM控制单相全桥逆变电路仿真探索:电压电流双闭环控制