2014-10-26 37 views
0

給定一個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

回答

1
#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

0

獲取長度和從去年推的每一個字母(在例如僞代碼:

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

相關問題