本文整理汇总了C++中Switch::action方法的典型用法代码示例。如果您正苦于以下问题:C++ Switch::action方法的具体用法?C++ Switch::action怎么用?C++ Switch::action使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Switch
的用法示例。
在下文中一共展示了Switch::action方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ArgParserException
std::vector<std::string> Parse(int argc, char** argv)
{
std::queue<std::string> args;
for(int i = 0; i < argc; i++)
args.push(argv[i]);
std::vector<std::string> ret;
while(!args.empty()){
std::string arg = args.front();
args.pop();
if(startsWith(arg, "--")){
auto it = switchesLong.find(arg.substr(2));
if(it == switchesLong.end())
throw ArgParserException(Str("no such switch: " << arg));
Switch s = it->second;
if(s.takesArg){
if(args.empty())
throw ArgParserException(Str("switch expects argument: " << arg << " " << s.argName));
s.actionArg(args.front());
args.pop();
}
else{
s.action();
}
}
else if(startsWith(arg, "-")){
if(arg.size() != 2)
throw ArgParserException(Str("short name multi-switches not supported: " << arg << " (did you mean -" << arg << ")?"));
auto it = switchesShort.find(arg[1]);
if(it == switchesShort.end())
throw ArgParserException(Str("no such switch: " << arg));
Switch s = it->second;
if(s.takesArg){
if(args.empty())
throw ArgParserException(Str("switch expects argument: " << arg << " " << s.argName));
s.actionArg(args.front());
args.pop();
}
else{
s.action();
}
}
else {
ret.push_back(arg);
}
}
return ret;
}