所以我正在創建一個命令行應用程序,我試圖允許帶有參數的命令,或者如果參數用引號括起來,它將被視爲1參數。std :: getline刪除空格?
實施例:試驗 「1 2」
命令 「測試」 將是, 「1 2」 將被傳遞的參數。
使用下面的代碼片段:
while(getline(t, param, ' ')) {
if (param.find("\"") != string::npos) {
ss += param;
if (glue) {
glue = false;
params.push_back(ss);
ss = "";
}
else {
glue = true;
}
}
else {
params.push_back(param);
}
}
不過的std ::函數getline似乎自動刪除空白,這是造成我的參數,從「1 2」至「12」
我已經改變環顧四周,但結果充斥着「如何刪除空白」的答案,而不是「如何不刪除空白」
有人有什麼建議嗎?
而是另起爐竈的,使用GNU ['gengetopt'(HTTP://www.gnu。 org/software/gengetopt/gengetopt.html)自動創建一個基於getopt_long的命令行解析器規則集,該規則集除了其他選項外還處理用引號括起來的文本元素。 – 2012-04-10 18:07:16