题解 | #参数解析#

参数解析

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")
全部评论

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务