【发布时间】:2019-10-12 13:54:17
【问题描述】:
函数要么不返回任何内容,要么返回一个空字符串。我试图在字符串中的 -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;
}
【问题讨论】:
-
你的
for循环完成后i的值是多少? -
循环结束后,i是字符串的长度。它会擦除整个字符串。
-
在
i += 2之后你必须break -
谢谢,我不敢相信我没有意识到...
标签: c++ string function parsing