题解 | #参数解析#
参数解析
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")