c ++如何编辑URL(删除部分内容)?

时间:2015-06-01 17:15:55

标签: c++ url edit

你好所有的堆栈溢出,我学习C ++有很多我还不知道的东西!我想知道如何添加URL并进行编辑?到目前为止我有这个!

我有3行数字和1个字母,我想删除最后一行数字和一行字母

#include <iostream>
#include <string>

#include "stdio.h"
#include "stdlib.h"
#include <algorithm>

using namespace std;

int main()
{
    string str("www.google.com/123456789.123456789123.123456789123456.g.testasdgrrsgd");
    string str2("www.google.com");
    str.replace(str.find(str2), str2.length(), "www.youtube.com/");
    //This code changes from "www.google.com" to "www.youtube.com/"

    size_t sp = str.find_first_of('.g', 7);
    if (sp != string::npos) {
        string base_url(str.begin() + 7, str.begin() + sp);
        cout << base_url << endl;
        sp = str.find_last_of('.g');
        if (sp != string::npos) {
            string query(str.begin() + sp + 1, str.end());
        }
    }
    system("pause");
    return 0;
}

此代码我设法删除了一行字母,但我无法删除最后一行。

我想成为最后的结果! www.youtube.com/123456789.123456789123

谢谢:)

2 个答案:

答案 0 :(得分:0)

我认为假设url将始终遵循相同的格式,您可以使用for循环

for(int dotCounter, i = str.length()-1; i >=0 ; --i) {
    if(str.at(i) == '.'){
        dotCounter++;
        if(dotCounter == 2)
            str.erase(i,(i-str.length()-1)
            break;
    }
}

这将从url的末尾向后计数,并且一旦循环遇到2 '.'个字符,它将擦除遍历的所有位置并打破循环。

如果网址不一定遵循该确切格式,请使用regular expressions 进行查看。

答案 1 :(得分:0)

我设法找到了办法!适用于所有人的

    size_t sp = URL.find_first_of('.g', 7);
if (sp != string::npos) {
    string base_url(URL.begin() + 7, URL.begin() + sp);

    size_t sp2 = base_url.find_last_of('.');
    if (sp2 != string::npos) {
        string base_url2(base_url.begin(), base_url.begin() + sp2);

        size_t sp3 = base_url2.find_last_of('.');
        if (sp3 != string::npos) {
            string base_url3(base_url2.begin(), base_url2.begin() + sp3);
            cout << base_url3 << endl;