AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
argc/argv — 参数的基础解析
C++ SELF
等级 67,
课时 0
讲解在 C++ 中如何通过
argc
/
argv
获取命令行参数,为什么
argv[i]
是 C 字符串,而不是
std::string
,如何安全地检查边界(
i
+
1
<
argc
),以及如何实现最简单的标志解析(
"--help"
,
"-h"
)、选项(
"--name"
"Alice"
和
"--name=Alice"
)和位置参数的解析。
UX CLI: --help、默认值、退出码
C++ SELF
等级 67,
课时 1
讨论如何将控制台工具变为清晰的契约:支持
--help
与提前退出、参数的默认值、在
std::cerr
中输出的正确错误信息,以及通过
enum class
ExitCode
的退出码策略(
0
— 成功,
2
— 参数错误)。我们将构建工具
FocusTimer
的框架,包含
print_usage
、
parse_args
函数以及通过
std::from_chars
的安全数字解析。
交互式 vs “一条命令 = 一次运行”
C++ SELF
等级 67,
课时 2
分析两种 CLI 工具模式:
one-shot
(带参数运行,执行一次操作后退出)和
interactive
(带命令循环的小型
REPL
)。讨论 UX 与自动化:保持
stdout
干净、通过
stderr
报错、返回码
return
0
/
return
!=
0
,并展示架构技巧“精简的
main
”在教学示例应用 TaskPad 中如何用于共享解析与执行命令的功能。
日志记录:info/warn/error 级别,统一格式
C++ SELF
等级 67,
课时 3
讲解在 C++ CLI 程序中建立日志纪律:为什么“结果”应该输出到
std::cout
,而诊断信息应输出到
std::cerr
;如何选择最小但有用的级别(
info
/
warn
/
error
)、将统一格式
[LEVEL] message
固定在一个地方并封装到一个函数
log()
。还会演示使用
enum class
+
switch
将级别映射为文本,以及在消息更方便通过流拼接时使用
std::ostringstream
。
std::source_location:把 file:line 加入日志
C++ SELF
等级 67,
课时 4
我们来看看,如何在 C++20/23 中使用
std::source_location
,让日志立即以
file:line
格式显示事件发生的位置(如果需要,还可以显示
function_name()
)。我们会理解一个关键细节:为什么
current()
必须作为参数的默认值;把位置信息集成进一个最小日志器;做出方便的包装函数
log_info
/
log_warn
/
log_error
而不丢失上下文;并分析常见错误。
Please enable JavaScript to continue using this application.