AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 20
std::cin 的状态:good/eof/fail/bad
C++ SELF
等级 20,
课时 0
我们来解析输入流
std::cin
的状态是如何组织的:
good()
、
eof()
、
fail()
、
bad()
的含义,为什么在格式错误后流会“粘住”,以及如何通过
if
(
std::cin
>>
x
)/
while
(
std::cin
>>
x
)安全地读取,并正确区分输入结束和格式错误。
std::cin.clear()
和
std::cin.ignore()
C++ SELF
等级 20,
课时 1
本讲讨论在错误格式输入后如何“修复” C++ 的控制台输入:流为何进入
fail()
状态,
clear()
实际做了什么(重置错误标志),为什么需要
ignore()
(从缓冲区丢弃垃圾),如何正确配合使用
clear()
+
ignore()
,以及为什么运算符
>>
与
std::getline
往往会得到“空字符串”。最后 — 一个实践的小示例菜单和常见错误解析。
std::optional<T>:用“有值/无值”替代魔法数字 -1
C++ SELF
等级 20,
课时 2
我们讲解为什么像
-
1
这样的“魔法值”用于“未找到”会导致隐含约定和错误,以及
std::optional<T>
如何把“没有结果”作为类型的一部分。在示例中通过查找索引、教学小项目
TaskList
和简单解析,展示返回
std::nullopt
、检查
if
(
has_value()
)、解引用
*
opt
以及实用方法
value_or()
。
std::from_chars — 带错误码的数字解析
C++ SELF
等级 20,
课时 3
讲解如何在 C++ 中使用
std::from_chars
安全且可预测地解析数字:无异常、无内存分配,通过返回值中的字段
ec
和
ptr
明确检查结果。学习如何区分“不是数字”和“数字太大”、实现严格输入(没有像
"12kg"
这种尾部)以及为基于
std::optional
的应用编写方便的封装和带状态的自定义结果。
[[nodiscard]]:不要忽略结果的纪律
C++ SELF
等级 20,
课时 4
解析 C++ 中的属性
[[nodiscard]]
:为什么编译器在结果被忽略时会发出警告,如何标注函数和类型(例如对
std::optional
),如何通过
(
void
)
正确地“有意识地忽略”,以及在过度或不当使用该工具时常见的错误有哪些。
Please enable JavaScript to continue using this application.