4

そのため、コマンドラインアプリケーションを作成していて、パラメーターを使用したコマンドを許可しようとしています。パラメーターが引用符で囲まれている場合は、1つのパラメーターとして扱われます。

例:「12」をテストします

「test」はコマンドになり、「12」は渡される単一のパラメーターになります。

次のコードスニペットを使用します。

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は空白を自動的に削除しているようです。これにより、パラメータが「12」から「12」に変更されます。

周りを見回しましたが、結果は「空白を削除しない方法」ではなく「空白を削除する方法」の回答で溢れています

誰か提案がありますか?

4

2 に答える 2

8

ただし、std::getlineは空白を自動的に削除するようです

それはまさにあなたがgetlineにやるように言っていることです:

getline(t, param, ' ');

getlineの3番目の引数は区切り文字です。入力行を解析する場合'\n'は、見つかるまでそれを読んでから処理する必要があります。

while(getline(t, param)) {
    /* .. */
}
于 2012-04-10T18:04:55.517 に答える
1

' 'うーん、で区切り文字として使用するように指示していますstd::getline。もちろん、空白を削除します。 http://www.cplusplus.com/reference/string/getline/

于 2012-04-10T18:04:52.043 に答える