所以我正在创建一个命令行应用程序,我试图允许带参数的命令,或者如果参数用引号括起来,它将被视为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”的空格
我环顾四周但结果充斥着“如何删除空白”的答案,而不是“如何不删除空格”
有人有什么建议吗?
答案 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/