11# cmdline
22
3- > 基于 C++23 的命令行解析库,API 见名知意,单 import
4-
5- [ English] ( README.md ) - 简体中文
6-
7- [ 文档] ( docs/api.md ) - [ API 参考] ( docs/api.md#类型一览 ) - [ 示例] ( examples/ )
3+ > 一个简单的命令行解析库/框架 - ` import mcpplibs.cmdline; `
84
95使用 C++23 模块的类型安全命令行解析库。流式链式接口,零样板代码。支持位置参数、短/长选项、子命令、全局标志,以及基于 ` std::expected ` 的错误处理。
106
117## ✨ 特性
128
13- - ** C++23 模块** — ` import cmdline `
9+ - ** C++23 模块** — ` import mcpplibs. cmdline `
1410
1511- ** 流式接口** — 链式构建方法,所见即所得的 API
1612
2016
2117- ** 类型安全结果** — ` std::expected<ParsedArgs, std::string> `
2218
23- - ** 多种解析模式** — 支持 ` argc/argv ` 、` cmdline::Args ` (即 ` vector<string> ` )或原始 ` string_view `
19+ - ** 多种解析模式** — 支持 ` argc/argv ` 、` cmdline::Argv ` (即 ` vector<string> ` )或原始 ` string_view `
2420
2521## 快速开始
2622
2723``` cpp
2824import std;
29- import cmdline;
25+ import mcpplibs. cmdline;
3026
3127using namespace mcpplibs ;
3228
@@ -43,15 +39,7 @@ int main(int argc, char* argv[]) {
4339 std::println("输入文件: {}", p.positional(0));
4440 });
4541
46- auto result = app.parse(argc, argv);
47- if (!result) {
48- if (result.error() == "help requested" || result.error() == "version requested")
49- return 0;
50- std::println("Error: {}", result.error());
51- return 1;
52- }
53- app.run(*result);
54- return 0;
42+ return app.run(argc, argv);
5543}
5644```
5745
@@ -75,15 +63,14 @@ auto app = cmdline::App("demo")
7563 .arg("target").required()
7664 .action([](const cmdline::ParsedArgs& a) { std::println("remove: {}", a.positional(0)); });
7765
78- auto result = app.parse(argc, argv);
79- if (result) app.run(*result);
66+ app.run(argc, argv);
8067```
8168
8269### 多种解析模式
8370
8471``` cpp
8572auto r1 = app.parse(argc, argv);
86- auto r2 = app.parse_from(cmdline::Args {"myapp", "add", "x", "1.0"});
73+ auto r2 = app.parse_from(cmdline::Argv {"myapp", "add", "x", "1.0"});
8774auto r3 = app.parse_from("myapp remove x --yes");
8875```
8976
0 commit comments