题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
#include <iostream>
#include <string>
using namespace std;
#include<vector>
int main() {
string s;
while (getline(cin, s)) { // 注意 while 处理多个 case
vector<string> v;//存放参数
bool flag=false;//是否在“”内部
string cur="";//记录参数
for(int i=0;i<s.length();i++)
{
if(s[i]==' ')//遇到空格判断是否在""内
{
if(flag==false)//如果不在,则表明此参数结束,存入容器中
{
v.push_back(cur);
cur="";
}
else {//如果在,则把空格也加入到参数中
cur+=s[i];
}
}
else if(s[i]=='"')//判断是左引号还是右引号
{
if(flag==false)//如果是左引号,则表明接下来进入“”内
{
flag=true;
}
else {//如果是右引号,则表明接下来离开“”内
flag=false;
}
}
else //不是空格和引号则加入参数中
{
cur+=s[i];
}
}
v.push_back(cur);//最后一个参数不以空格结尾,所以需要手动加入容器
cout<<v.size()<<endl;//容器大小即为参数个数
for(int i=0;i<v.size();i++)//按顺序输出各参数
{
cout<<v[i]<<endl;
}
}
}
// 64 位输出请用 printf("%lld")