🔤 C5-3 字符串模拟与输出调试
知识点体系逻辑图 · 陶老师 C++ 编程课堂
🎯 字符串模拟与输出调试
C5模拟法系列第三讲 · 四大知识模块
📝
模块一:字符串操作函数
s.size()
:获取字符串长度
s[i]
:访问第i个字符(从0开始)
s.substr(i, len)
:截取子串
s.replace(i, len, str)
:替换子串
s.find(p)
:查找子串位置
🔍
模块二:字符串上的模拟
有重叠子串计数
:找到后i++继续找
无重叠子串计数
:找到后i+=m跳过
开心消消乐
:replace消除连续相同字符
字符遍历
:for循环逐个处理字符
🔧
模块三:语法问题与编译错误
expected '}'
:缺少右括号
not declared in scope
:变量未声明/缺头文件
错误定位特点
:报错位置可能不准
配对练习
:错误信息↔错误原因
🐛
模块四:逻辑错误与输出调试
编译通过≠正确
:逻辑错误运行才暴露
输出调试法
:cout打印中间变量
质数的和
:调试循环范围
隐藏敏感信息
:find+replace模拟
📌 核心语法速查
// 字符串操作四件套
#include
<iostream>
#include
<string>
using namespace
std;
int
main() { string s =
"hello"
;
cout
<< s.
size
() << endl;
// 5
cout
<< s[
0
] << endl;
// h
cout
<< s.
substr
(
0
,
3
) << endl;
// hel
s.
replace
(
0
,
3
,
"HE"
);
cout
<< s << endl;
// HElo
return
0
; }
⚖️ 有重叠 vs 无重叠 对比
对比项
有重叠计数
无重叠计数
找到一个子串后
i++(继续下一位)
i += m(跳过m位)
s="aaaa", p="aa"
结果=3
结果=2
循环写法
for正常i++
for+手动i+=m
典型应用
统计出现次数
消消乐、替换
🔄 字符串模拟解题流程
第1步:明确模拟目标(计数?替换?消除?)
↓
第2步:确定遍历方式(逐个字符扫描 or 滑动窗口)
↓
第3步:用substr截取窗口子串进行比较
↓
第4步:根据规则更新(计数++ / replace替换 / i+=m跳过)
↓
第5步:输出结果,用cout调试中间步骤
🧭 C5-3 课程导航
📖 课程学习
🧠 知识点回顾
📝 随堂练习
🎮 课后拓展
💻 代码填空
🔒 拓展解析
🏆 OJ练习