获取给定的字符串与/
问题描述:
给定一个URL(这是一个字符串)分隔符,如本的最后一个目录的文字:获取给定的字符串与/
www.testsite.com/pictures/banners/whatever/
我希望能够获取URL中最后一个目录的字符(在这种情况下,它是“无论”,我也想删除正斜杠)。什么是最有效的方式来做到这一点?
感谢所有帮助
答
#include <iostream>
#include <string>
std::string getlastcomponent(std::string s) {
if (s.size() > 0 && s[s.size()-1] == '/')
s.resize(s.size() - 1);
size_t i = s.find_last_of('/');
return (i != s.npos) ? s.substr(i+1) : s;
}
int main() {
std::string s1 = "www.testsite.com/pictures/banners/whatever/";
std::string s2 = "www.testsite.com/pictures/banners/whatever";
std::string s3 = "whatever/";
std::string s4 = "whatever";
std::cout << getlastcomponent(s1) << '\n';
std::cout << getlastcomponent(s2) << '\n';
std::cout << getlastcomponent(s3) << '\n';
std::cout << getlastcomponent(s4) << '\n';
return 0;
}
+0
非常感谢!它效果很好。 – TheTerminator1337 2014-10-26 17:41:25
答
获取长度和从去年推的每一个字母(在例如伪代码:
x = string.length()
while(X != 0)
{
CharVector.push(string.at(x));
x--;
if(string.at(x) == "\") break;
}
,那么你得到的,而不是任何 revetahw然后,只需使用此温控功能将其交换:
string ReverseString(const string& word)
{
std::string l_bla;
bla.reserve(word.size());
for (string::size_type x = word.length (); x > 0; x--)
{
l_bla += word.at (x -1);
}
return l_bla;
}
所以你有什么
+0
这是一个相当低效且令人费解的解决方案。只需将反斜杠和substr()'rfind'改为一个新的字符串即可。 – tenfour 2014-10-26 15:58:07
你总是可以用['std :: string :: rfind()'](http://en.cppreference.com/w/cpp/string/basic_string/rfind)开头。 – 2014-10-26 15:53:25