使用/的分隔符获取给定字符串的最后一个目录的文本

时间:2014-10-26 15:50:33

标签: c++ string parsing url stl

给定一个URL(这是一个字符串),例如:

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

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

感谢您的帮助

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

获取长度并推送最后一个字母(例如伪代码:

x = string.length()
while(X != 0)
{
CharVector.push(string.at(x)); 
x--;
if(string.at(x) == "\") break;
}
然后你得到了启发而不是任何东西。 然后用这个功能交换它:

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;
}

所以你得到了什么