题解 | #参数解析#

参数解析

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;
        }

    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务