题解 | #参数解析#
参数解析
http://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
需要截的情况
1.num % 2 == 0 并出现' '
2.num % 2 == 0 并出现'"',是“开始的地方
3.num % 2 == 1 并出现'"',是”结束的地方
每个substr判断一下是不是空串防止空格和引号接连出现
循环结束还剩最后一个空格或右引号到末尾的子串没截取
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str;
vector<string> v;
while(getline(cin, str))
{
int num = 0, temp = 0, sublen = 0;
for(int i = 0; i < str.length(); i++)
{
if((num % 2 == 0) && str[i] == ' ')
{
string sub = str.substr(temp, sublen);
if(sub.length()>0)
v.push_back(sub);
temp = i + 1;
sublen = 0;
}else if((num % 2 == 0) && str[i] == '"'){
string sub = str.substr(temp, sublen);
if(sub.length()>0)
v.push_back(sub);
temp = i + 1;
num++;
sublen = 0;
}else if((num % 2 == 1) && str[i] == '"'){
string sub = str.substr(temp, sublen);
if(sub.length()>0)
v.push_back(sub);
temp = i + 1;
num ++;
sublen = 0;
}else {
sublen ++;
}
}
string sub = str.substr(temp, sublen);
if(sub.length()>0)
v.push_back(sub);
cout << v.size() << endl;
for(vector<string>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it <<endl;
}
}
}