特定の URL の最後の N 個のセグメントを返す関数を作成する必要があります。境界条件は適切に処理する必要があります。Cで問題なく実行できますが、思いつく最高のC++バージョンは次のとおりです。N=2
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 +アルゴリズム)方法はありますか?