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

c++ how to edit URL (remove part of it)?

本文关键字:URL 删除部 何编辑 c++ 编辑      更新时间:2023-10-16

大家好,我正在学习的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

谢谢:)

假设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个'.'字符,它将擦除遍历的所有位置并中断循环。

如果url不总是遵循精确的格式,那么考虑使用正则表达式

我设法找到了一个方法!

    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;