题解 | #参数解析#
参数解析
https://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<string> #include<vector> using namespace std; // 1. 参数解析 void cmdLineParse(const string& s) { string tmp; vector<string> vs; bool flag = false; // 默认不处于字符串的状态 for (int i = 0; i < s.size(); i++) { // 判断是否处于字符串的状态 if (s[i] == '"') { // 取反因为还要遇到下一个",当在遇到 " 就不处于字符串的状态了 flag = !flag; } // 判断是否为参数分隔符 else if (s[i] == ' ' && !flag) { // 为空格直接把字符串放进vector vs.push_back(tmp); // clear tmp = ""; } // 正常的参数 else { tmp += s[i]; } }// xcopy /s c:\\ d:\\e // 最后一个参数后没有分隔符分割,需要特殊处理一下,尾插到vector中去vs.push_back(tmp); cout << vs.size() << endl; for (int i = 0; i < vs.size(); i++) { cout << vs[i] << endl; } } int main() { string str; while (getline(cin, str)) { cmdLineParse(str); } return 0; }