题解 | #参数解析#

参数解析

https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677

输入的字符串有两种情况:1.字符串间用空格分隔,无双引号;2.字符串间用空格分隔,有双引号,两个双引号中间所有字符(包括空格)视为同一个字符串。

每次先取cin流中的头一个字符c,如果c=='"',说明从c到cin流后一个'"'中间是同一个字符串,因此用getline将两个'"'之间的字符串提取出来;如果c!='"',说明是通过空格分隔的字符串,可使用cin.putback(c)将字符c放回cin流中,继续提取字符串。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    vector<string> mvec;
    char c;
    while(cin>>c) {
        string buf;
        if(c=='"') 
            getline(cin,buf,'"');
        else {
            cin.putback(c);
            cin>>buf;
        }
        mvec.push_back(buf);
    }
    cout<<mvec.size()<<endl;
    for(string str:mvec) 
        cout<<str<<endl;
    return 0;
}
// 64 位输出请用 printf("%lld")
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:52
点赞 评论 收藏
分享
12-02 14:27
Java
牛可乐121381:好的,谢谢你,韩明轩同学
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务