std :: getline删除空格?

时间:2012-04-10 18:00:32

标签: c++ whitespace

所以我正在创建一个命令行应用程序,我试图允许带参数的命令,或者如果参数用引号括起来,它将被视为1个参数。

示例:测试“1 2”

“test”将是命令,“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”的空格

我环顾四周但结果充斥着“如何删除空白”的答案,而不是“如何不删除空格”

有人有什么建议吗?

2 个答案:

答案 0 :(得分:7)

  

然而std :: getline似乎会自动删除空格

这正是你告诉getline要做的事情:

getline(t, param, ' ');

getline中的第三个参数是分隔符。如果要解析输入行,则应该在找到'\n'之前阅读它,然后处理它:

while(getline(t, param)) {
    /* .. */
}

答案 1 :(得分:1)

嗯,你告诉它使用' '作为std::getline中的分隔符。当然它会剥夺空白。 http://www.cplusplus.com/reference/string/getline/