当前位置: 首页>>代码示例>>C++>>正文


C++ Switch::actionArg方法代码示例

本文整理汇总了C++中Switch::actionArg方法的典型用法代码示例。如果您正苦于以下问题:C++ Switch::actionArg方法的具体用法?C++ Switch::actionArg怎么用?C++ Switch::actionArg使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Switch的用法示例。


在下文中一共展示了Switch::actionArg方法的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;
	}
开发者ID:SaferSocietyGroup,项目名称:videoplayer,代码行数:65,代码来源:ArgParser.cpp


注:本文中的Switch::actionArg方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。