获取给定的字符串与/

问题描述:

给定一个URL(这是一个字符串)分隔符,如本的最后一个目录的文字:获取给定的字符串与/

www.testsite.com/pictures/banners/whatever/

我希望能够获取URL中最后一个目录的字符(在这种情况下,它是“无论”,我也想删除正斜杠)。什么是最有效的方式来做到这一点?

感谢所有帮助

+0

你总是可以用['std :: string :: rfind()'](http://en.cppreference.com/w/cpp/string/basic_string/rfind)开头。 – 2014-10-26 15:53:25

#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