AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 63
RAII 与正确关闭
C++ SELF
等级 63,
课时 0
我们来学习 C++ 的文件流:
std::ifstream
、
std::ofstream
和
std::fstream
有什么区别,如何正确打开文件(在构造函数中,或通过
open()
),如何通过
if
(
!
stream
)
和
is_open()
检查是否成功,以及为什么
RAII
会自动保证资源被正确关闭。最后还有一个保存任务的小练习,以及一份典型错误清单。
流状态: good/eof/fail/bad
C++ SELF
等级 63,
课时 1
我们来分析 C++ 流如何记住输入结果:
good()
、
eof()
、
fail()
、
bad()
四种状态有什么区别,为什么陷阱
while
(
!
in
.
eof
()) 会导致多执行一次循环,如何正确地通过
while
(
in
>>
x
) 或逐行使用
std::getline
来构建读取循环,以及如何诊断停止原因并在
fail()
后通过
clear()
和
ignore()
进行恢复。
文本与二进制格式
C++ SELF
等级 63,
课时 2
我们来分析为什么磁盘上的任何文件本质上只是字节,以及“格式”如何变成关于读取/写入的约定。比较文本与二进制方法,学习如何通过
std::ios::openmode
选择打开模式,用按位的
|
(而不是逻辑的
||
)组合标志,有意识地使用
std::ios::trunc
/
std::ios::app
和
std::ios::binary
,并理解
std::endl
与
'\n'
在
flush()
方面的区别。一切都以小型示例应用
TaskBook
为例讲解。
I/O 错误 — 异常 vs 状态检查
C++ SELF
等级 63,
课时 3
我们讲解 C++ 中两种实用的输入/输出错误处理风格:通过流状态的手工检查(通过
good()
,
eof()
,
fail()
,
bad()
和在条件中读取的惯用法
while
),以及通过流的异常(使用
exceptions()
和标志位
failbit
/
badbitreturn
false
vs
throw
)、对加载/保存任务的小重构,以及常见错误,比如
while
(!
in
.
eof
())
。
可靠加载:fail fast vs best effort 策略
C++ SELF
等级 63,
课时 4
我们来解析如何在 C++ 中构建“可靠的加载”从文件读取数据:区分 3 个层次(I/O → 解析 → 校验),通过
std::getline
小心读取行,使用
std::from_chars
无异常解析数字,检查模型不变式并选择错误策略:
fail fast
(全有或全无)或
best effort
(部分成功 + 问题报告)。
Please enable JavaScript to continue using this application.