在命令行輸入以下命令:ios
xcopy /s c:\ d:\
ide
各個參數以下:
參數1:命令字xcopy
參數2:字符串/s
參數3:字符串c:\
參數4: 字符串d:\
請編寫一個參數解析程序,實現將命令行各個參數解析出來。spa
解析規則: 命令行
輸入描述:code
輸入一行字符串,能夠有空格ci
輸出描述:字符串
輸出參數個數,分解後的參數,每一個參數都獨佔一行get
示例1
輸入string
xcopy /s c:\ d:\it
輸出
4
xcopy
/s
c:\
d:\
#include <iostream> #include <string> using namespace std; int main() { string str; while(getline(cin, str)) { //先統計輸出參數的個數 int count = 0; int size = str.size(); for(int i = 0; i < size; ++i) { if(str[i] == ' ') count++; //對‘」’進行特殊處理 if(str[i] == '"') { do{ i++; }while(str[i] != '"'); } } cout << count+1 << endl; //用flag表示是否含雙引號,0表示有雙引號 //注意:雙引號中的空格要打印出來 //這裏採用異或來操做flag的值, 兩個雙引號能夠使其復原 int flag = 1; for(int i = 0; i < size; ++i) { //有雙引號,flag經過異或變爲0,下一次再遇到雙引號flag變爲1 if(str[i] == '"') flag ^= 1; //打印有效元素 if(str[i] != ' ' && str[i] != '"') cout << str[i]; //打印雙引號內的空格,是否有雙引號已用flag標記 if(str[i] == ' ' && (!flag)) cout << str[i]; //遇到雙引號外面的就換行 if(str[i] == ' ' && flag) cout << endl; } cout << endl; } return 0; }