gpt4 book ai didi

C++ urljoin 等价物

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:48 25 4
gpt4 key购买 nike

Python 有一个 urljoin 函数,它接受两个 URL 并智能地连接它们。有没有在c++中提供类似功能的库?

urljoin 文档:http://docs.python.org/library/urlparse.html

和 python 示例:

>>> urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
'http://www.cwi.nl/%7Eguido/FAQ.html'

最佳答案

我想通了。我使用了库 uriparser:http://uriparser.sourceforge.net/并匆匆实现了如下功能。它执行稀疏错误检查并可能泄漏内存。

std::string urljoin(std::string &base, std::string &relative)
{
UriParserStateA state;
UriUriA uriOne;
UriUriA uriTwo;

state.uri = &uriOne;

if (uriParseUriA(&state, base.c_str()) != URI_SUCCESS)
{
return "";
}
state.uri = &uriTwo;
if (uriParseUriA(&state, relative.c_str()) != URI_SUCCESS)
{
uriFreeUriMembersA(&uriTwo);
return "";
}

UriUriA result;
if (uriAddBaseUriA(&result, &uriTwo, &uriOne) != URI_SUCCESS)
{
uriFreeUriMembersA(&result);
return "";
}
uriFreeUriMembersA(&uriOne);
uriFreeUriMembersA(&uriTwo);

int charsRequired;
uriToStringCharsRequiredA(&result, &charsRequired);
charsRequired++;

char *buf = (char*) malloc(charsRequired * sizeof(char)); if (uriToStringA(buf, &result, charsRequired, NULL) != URI_SUCCESS)
return "";
uriFreeUriMembersA(&result);

std::string ret(buf);
free(buf);

return ret;
}

关于C++ urljoin 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com