CCF 201403-3 命令行选项 100分(stringstream类)
Posted 登登登ccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF 201403-3 命令行选项 100分(stringstream类)相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
int main() {
string s;
cin>>s;
vector<int> type(128); //字母通过ASCII码表示,表示该字母不是命令行选项设为0
for(int i=0; i<s.size(); i++) {
if(i+1<s.size() && s[i+1]==':')
type[s[i]]=2; //带参数选项设为2
else
type[s[i]]=1; //不带参数选项设为1
}
int n;
cin>>n;
cin.get(); //吸收换行符
for(int i=0; i<n; i++) {
getline(cin,s); //按行输入s
stringstream ss(s); //构造函数,将s加入字符串流
ss>>s; //首先释放命令行工具名--ls
map<char,string> ans;
while(ss>>s) { //接着释放各个参数
string t;
if((s.size()==2) && (s[0]=='-') && (type[s[1]]==1))
ans[s[1]]=""; //不带参数选项,map中对应值为空字符串
else if((s.size()==2) && (s[0]=='-') && (type[s[1]]==2) && (ss>>t))
ans[s[1]]=t; //带参数选项,map中对应值为t,即参数
else
break; //不符合规定的参数,跳出循环
}
//输出
cout<<"Case "<<i+1<<": ";
for(auto it=ans.begin(); it!=ans.end(); it++) {
cout<<"-"<<it->first<<" ";
if(!it->second.empty())
cout<<it->second<<" ";
}
cout<<endl;
}
return 0;
}
以上是关于CCF 201403-3 命令行选项 100分(stringstream类)的主要内容,如果未能解决你的问题,请参考以下文章