私はコマンドラインアプリケーションを作成していますが、パラメータ付きのコマンドを許可しようとしています。または、パラメータが引用符で囲まれている場合は、1パラメータとして扱われます。std :: getlineは空白を削除しますか?
例:テスト "1 2"
"試験" されるコマンドは、 "1 2" が渡された単一のパラメータであろう。
次のコードスニペットの使用:ただしSTD
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);
}
}
を:: getlineのは、私がしまし自動私のパラメータが「12」
「1 2」から変更することが原因となっている空白を削除しているようです周囲を見回したが、結果に「空白を除去しない方法」ではなく「空白を除去する方法」の回答があふれている
誰もが何か提案がありますか?
代わりに車輪の再発明の、GNU [ 'gengetopt'](HTTPを使用します//www.gnuを。 org/software/gengetopt/gengetopt.html)を使用して、 'getopt_long'ベースのコマンドラインパーサールールセットを作成します。これは他のオプションの中でも引用符で囲まれたテキスト要素を扱います。 –