首页 > 编程 > C++ > 正文

[华为OJ--C++]048-参数解析

2019-11-08 01:27:05
字体:
来源:转载
供稿:网友

题目描述:

在命令行输入如下命令: xcopy /s c:/ d:/,各个参数如下:

参数1:命令字xcopy

参数2:字符串/s

参数3:字符串c:/

参数4: 字符串d:/

请编写一个参数解析程序,实现将命令行各个参数解析出来。

解析规则:

1.参数分隔符为空格

2.对于用“”包含起来的参数,如果中间有空格,不能解析为多个参数。

  比如在命令行输入xcopy /s "C:/PRogram files" "d:/"时,参数仍然是4个,

  第3个参数应该是字符串C:/programfiles,而不是C:/program,注意输出参数时,需要将""去掉,引号不存在嵌套情况。

3.参数不定长

4.输入由用例保证,不会出现不符合要求的输入

输入描述: 输入一行字符串,可以有空格

输出描述: 输出参数个数,分解后的参数,每个参数都独占一行

输入例子:xcopy /s c:/// d:///

输出例子:

4

xcopy

/s

c:///

d:///

算法实现:

#include<iostream>#include<string>#include<vector>   using namespace std;        //************************************************      // * Author: 赵志乾      // * Date: 2017-2-21       // * Declaration: All Rigths Reserved !!!      //***********************************************/        int main()    {       	string instr;	getline(cin,instr);	instr+=" ";	vector<string> ret;	int len=0;	for(int i=0;i<instr.length();i++)	{		if(instr[i]=='/"')		{			i++;			len=0;			while(i<instr.length()&&instr[i]!='/"')			{				len++;				i++;			}			ret.push_back(instr.substr(i-len,len));			len=0;			i=i+1;			continue;		}		if(instr[i]!=' ')			len++;		else		{			ret.push_back(instr.substr(i-len,len));			len=0;		}		}	cout<<ret.size()<<endl;	for(int i=0;i<ret.size();i++)		cout<<ret[i]<<endl;      return 0;    }    

算法实现


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选