码迷,mamicode.com
首页 > 其他好文 > 详细

CCF -

时间:2017-09-16 20:49:30      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:std   c++   选项   命令行   tor   clu   orm   div   break   

 

#include<iostream>
#include<cstring>
#include<string>
#include<vector>
#include<map>
using namespace std;
void spilt(vector<string>& v, char s[], char t[])
{
    char *sp;
    sp=strtok(s,t);
    while(sp)
    {
        v.push_back(sp);
        sp=strtok(NULL,t);
    }
}
void mygetline(char pc[])
{
    char c;
    while((c=getchar())!=\n&&c!=EOF)
        *pc++=c;
    *pc=\0;
}
int main()
{
    string format;
    char s[257];
    int i,j,n;
    cin>>format>>n;
    getchar();
    for(i=1;i<=n;i++)
    {
        vector<string> sv;
        map<string,string> m;
        mygetline(s);
        // 切分命令行:命令和各个参数分开
        spilt(sv,s," ");
        // 处理各个参数,放入map变量m中
        for(j=1;j<(int)sv.size();j++)
        {
            // 判断是否是选项,选项则处理
            if(sv[j].size()==2&&sv[j][0]==-) 
            {
                int pos=format.find(sv[j][1]);
                // 选项在格式中未找到则出错结束
                if(pos==-1)
                    break;
                // 选项未出现过则添加
                if(m.find(sv[j])==m.end())
                    m[sv[j]]="";
                // 更新参数:后出现优先
                if(format[pos+1]==:&&j+1<(int)sv.size())
                {
                    m[sv[j]]=sv[j+1];
                    j++;
                }
            }
            else
                break;
        }
        cout<<"Case "<<i<<":";
        for(map<string,string>::iterator iter=m.begin();iter!=m.end();iter++)
        {
            cout<<" "<<iter->first;
            if(iter->second!="")
                cout<<" "<<iter->second;
        }
        cout<<endl;
    }
    return 0;
}

 

CCF -

标签:std   c++   选项   命令行   tor   clu   orm   div   break   

原文地址:http://www.cnblogs.com/5211314jackrose/p/7532040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!