AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 17
解析策略:find/substr 与 流式解析的对比
C++ SELF
等级 17,
课时 0
我们将讲解 C++ 中的字符串解析,作为一种按格式契约进行的转换:规范化输入、提取字段与校验。比较两种基本策略——基于位置的(
find()
+
substr()
)和流式(通过
>>
读取标记),并讨论如何根据格式选择方法,构建一个小型命令解释器(
set
与
sum
),添加
trim()
,以及分析典型错误(例如忘记检查
std::string::npos
或者
substr()
的错误边界)。
std::stringstream:提取标记
C++ SELF
等级 17,
课时 1
在 C++ 中讲解
std::stringstream
:如何把字符串变成一个“迷你版
std::cin
”,通过运算符
>>
读取标记,如何通过
if
(
ss >> ...
)可靠地检查读取是否成功,如何控制格式(包括“多余参数”),理解流的状态(
fail
),以及如何通过
str(...)
和
clear()
正确复用流。最后我们会组装一个迷你 CLI“购物清单”,并总结典型错误。
格式问题:空格、引号、空字段
C++ SELF
等级 17,
课时 2
我们来剖析在解析输入时格式的几种“捣蛋”情况:多余的空格(比较
std::getline
和
operator
>>
的差异)、以分隔符分隔的字符串中的空字段(为什么
"a;;b"
表示三个值),以及带空格和引号的值的问题(以及为什么需要
std::quoted
)。通过一个简易的 ToDo 命令行例子,我们将学习如何做简单的命令解析,添加最小的去除前导空白、检查“空”值并通过
std::getline
(...,
';'
) 解析列表。
std::quoted:带引号字符串的读取与写入
C++ SELF
等级 17,
课时 3
解析流操纵器
std::quoted
(头文件
<iomanip>
):它如何帮助把包含空格和引号的字符串当作“一个令牌”来读取和打印。在实践中我们将构建一个迷你命令行界面,讨论“写入 ↔ 读取”的对称性、两层转义(C++ 字面量 vs 数据格式),以及解析命令时常见的错误。
Raw‑字符串 R"( ... )"
C++ SELF
等级 17,
课时 4
我们来讲解 C++ 中的 raw 字符串字面量:为什么需要它们,语法
R"( ... )"
是如何工作的,为什么在 raw 字符串里
\n
不是换行,怎样在不写出“满屏反斜杠面条”的情况下编写多行文本,如何使用自定义定界符
R"TAG( ... )TAG"
,以及 raw 字符串和
std::quoted
有什么不同(它们解决的是不同层面的问题)。最后——我们还会看看典型错误以及如何避免它们。
Please enable JavaScript to continue using this application.