我需要编写一个函数来返回给定 URL 的最后 N 段,即给定/foo/bar/zoo和N=2
,我希望返回/bar/zoo。边界条件应妥善处理。我用 C 做这件事没有问题,但我能想到的最好的 C++ 版本是这样的:
string getLastNSegments(const string& url, int N)
{
basic_string<char>::size_type found = 0, start = path.length()+1;
int segments = 2;
while (start && segments && (start = path.find_last_of('/', start-1)) != string::npos) {
found = start;
segments--;
}
return url.substr(found);
}
cout << "result: " << getLastNSegments("/foo/bar/zoo", 2) << endl;
有没有更惯用的(STL+算法)方式来做到这一点?