你好所有的堆栈溢出,我学习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
谢谢:)
答案 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;