要么函数不返回任何内容,要么返回空字符串。我正在尝试擦除字符串中-e文本之后的下一个序列之前的所有内容。例如,test -e test/file/path应该返回test/file/path,不带-e后面的空格。但是,当函数不返回任何内容或返回空字符串时。我找不到我的功能有任何问题,请帮帮忙!
#include <iostream>
using namespace std;
string fileparse(string str) {
int i;
for (i = 0; i < str.size(); i++)
if (str[i] == '-')
i += 2; //to account for the space after 'e'
str.erase(str.begin(), str.begin()+i);
return str;
}
int main()
{
string str = "test -e test/file/path";
string vars = fileparse(str);
cout << vars << endl; //blank
return 0;
}发布于 2019-05-27 08:55:11
if (str[i] == '-') {
i += 3;
break;
}遇到'-'符号时停止。去掉i是由1增加的,去掉字母e和一个空格是由2增加的。
发布于 2019-05-27 09:52:10
您必须中断for循环,因为您正在等待它完成,而'i‘一直在递增。然后,当你引用'i‘时,它会删除整个字符串。
https://stackoverflow.com/questions/56318441
复制相似问题