今天上午写代码时,写着写着遇到一个需求,是在 C++ 程序里把一个命令行字符串解析成对应的一组变量。也就是把形如:
app.exe foo 100 bar 0.0
这样的一个字符串解析一下,放到下面这样的一组变量里:
1 2 3 4 5 6 7 |
struct VariableGroup { std::string name = ""; int id = 0; std::string description = ""; float precision = 0.0f; }; |
这个需求很常见,相信大家都遇到过吧。在如果是 Python,有现成的 argparse 和 docopt,C++ 的话,选择就少一些了,而我又不想用 boost::tokenizer 之类的库,脑子里突然闪过 std::tuple 这货。好吧,就是它了,试着手写一个类型安全,简洁轻便,又能有一定灵活性的版本吧。