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类)的主要内容,如果未能解决你的问题,请参考以下文章

CCF 201403-3 命令行选项

CCF 201403-3 命令行选项

CCF_ 201403-3 _命令行选项

CCF 201403-3命令行选项 (STL模拟)

CSP201403-3:命令行选项

ccf--20140303--命令行选项