CCF真题之命令行选项
201403-3
#include<iostream>
#include<string>
#include<map> //map会自动排序
using namespace std;
int main(){
int N,i,first,second,index,flag;
string letters,cmds,tmp,parameter;
map<string,string> m;
cin>>letters>>N;
getline(cin,cmds);
for(i = 0; i < N; i++){
getline(cin,cmds);
first = cmds.find(" ");
while(first > 0){
cmds = cmds.substr(first+1,cmds.length()-first-1);
second = cmds.find(" ");
if(second < 0)
{
flag=1;
second = cmds.length();
}// break;
tmp = cmds.substr(0,second);
if(tmp.length() == 2 && tmp[0] == '-'){
index = letters.find(tmp[1]);
if(index >= 0){
if(index+1 < letters.length() &&letters[index+1] == ':'){ //带参数
if(flag==1) break;//若带参数,输入ls -w,则报错,若无参,输入ls -a,则正确参数
else
{
cmds = cmds.substr(second+1,cmds.length()-second-1);
second = cmds.find(" ");
if(second < 0) second = cmds.length();
parameter = cmds.substr(0,second);
if(m.count(tmp))//使用count检查map对象中某键是否存在
m.erase(tmp); //存在,则删除 //处理不重复输出
m.insert(pair<string,string>(tmp,parameter));
}
//continue;
}
else
{
if(m.count(tmp))//使用count检查map对象中某键是否存在
m.erase(tmp); //存在,则删除
m.insert(pair<string,string>(tmp,"")); //处理不重复输出
}
first = cmds.find(" ");
}
else break; //无这个参数
}
else break; //参数错误
//first = cmds.find(" ");
}
cout<<"Case "<<i+1<<":";
map<string,string>::iterator it = m.begin(); //map默认是排好序的
while(it != m.end()){
cout<<" "<<it->first;
if(it->second !="")
cout<<" "<<it->second;
++it;
}
cout<<endl;
m.clear();
}
return 0;
}
CCF真题之命令行选项的更多相关文章
- Maven学习(四)Maven 命令行选项
说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:describe -Dcmd=compiler:co ...
- 学习笔记——Maven 命令行选项
2014-10-09:更新裁剪反应堆具体用法 说明: 1.使用-选项时,和后面的参数之间可以不要空格.而使用--选项时,和后面的参数之 间必须有空格.如下面的例子: $ mvn help:des ...
- Microsoft Windows Installer 工具 Msiexec.exe 的命令行选项
摘自:http://support.microsoft.com/kb/314881/zh-cn 概要 本文列出了 Windows Installer 工具 Msiexec.exe 的命令行选项.Msi ...
- make的命令行选项
make的命令行选项 -b -m 忽略,提供其它版本make兼容性. -B --always-make 强制重建所有规则的目标,不根据规则的依赖描述决定是否重建目标文件. -C DIR --direc ...
- PhantomJS命令行选项
支持命令行选项有: --help或-h列出所有可能的命令行选项.立即停止,不会运行一个脚本作为参数传递. --version或-v打印的版本PhantomJS.立即停止,不会运行一个脚本作为参数传递. ...
- 【Python】【自动化测试】【pytest】【常用命令行选项】
https://www.cnblogs.com/cnkemi/p/9989019.html http://www.cnblogs.com/cnkemi/p/10002788.html pytest 常 ...
- python 解析命令行选项
问题: 程序如何能够解析命令行选项 解决方案 argparse 模块可被用来解析命令行选项 argparse 模块 argparse 模块是标准库中最大的模块之一,拥有大量的配置选项 dest 参数指 ...
- Ruby 命令行选项
Ruby 命令行选项 Ruby 一般是从命令行运行,方式如下: $ ruby [ options ] [.] [ programfile ] [ arguments ... ] 解释器可以通过下列选项 ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
随机推荐
- 纯C++文件调用MFC类
在VS2008中 将预编译头属性 由 不使用预编译头 改成 使用使用预编译头 在响应的.cpp文件的最前面 #include "stdafx.h"
- pro9
1.本次课学习到的知识点 C语言的几个基本数据类型 各种基本数据类型的常量的表现形式 C语言的表达式个中表达式的求解规则 2.实验过程中遇到的问题及解决方法: 不太理解完数的概念以及如何判断完数,另外 ...
- Linq分组功能
Linq在集合操作上很方便,很多语法都借鉴自sql,但linq的分组却与sql有一定的区别,故整理发布如下. 1. Linq分组 分组后以Key属性访问分组键值. 每一组为一个IEnumberAbl ...
- 图形显示之RGB
记得初中学数学几何时,有这样一句话:点运动成线,线运动成面,面运动成体. 其它方面也有相似的原理. 例如常见的gif动态图,就是由一帧一帧的图片快速切换得到的.那么,图片又是怎么显示的呢? 一副图片是 ...
- javaScript中的单引号与双引号
javaScript中的单引号与双引号没有什么区别.但因为xhtml规范要求所有xhtml属性要用双引号括起来.所以在javaScript中使用单引号. var html = '<h2 clas ...
- H264(NAL简介与I帧判断)
1.NAL全称Network Abstract Layer, 即网络抽象层. 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(N ...
- 使用Areas分离ASP.NET MVC项目
为什么需要分离? 我们知道MVC项目各部分职责比较清晰,相比较ASP.NET Webform而言,MVC项目的业务逻辑和页面展现较好地分离开来,这样的做法有许多优点,比如可测试,易扩展等等.但是在实际 ...
- magento 图片缓存是如何生成的
Varien_Image_Adapter_Gd2 类 ,里面有个save()方法,通过图片格式拼出来的方法 call_user_func_array($this->_getCallback(' ...
- npy in c
https://jcastellssala.com/2014/02/01/npy-in-c/
- pwd命令(转)
Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...