std::getline 删除空格

std::getline removes whitespaces?

本文关键字:空格 删除 getline std      更新时间:2023-10-16

所以我正在创建一个命令行应用程序,我正在尝试允许带有参数的命令,或者如果参数用引号括起来,它将被视为 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"

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

有人有什么建议吗?

但是 std::getline 似乎会自动删除空格

这正是您告诉getline要做的:

getline(t, param, ' ');

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

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

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