如何在 C++ 中将两个相对 URI 合二为一
Posted
技术标签:
【中文标题】如何在 C++ 中将两个相对 URI 合二为一【英文标题】:How to combine two relative URIs into one in C++ 【发布时间】:2021-11-13 22:57:23 【问题描述】:我有一个基本 URI,例如 https://***.com/questions/ask
和一个相对 URI。
我想将它们全部组合成一个绝对 URI。
例子:
相对 URI:../
结果:https://***.com/questions
相对 URI:/abc/kk?6
结果:https://***.com/abc/kk?6
相对 URI:task.php?ui=4
结果:https://***.com/questions/task.php?ui=4
我该怎么做?
【问题讨论】:
你试过什么?请出示您的代码。 C++ 没有 URL 解析能力。您是否考虑过特定的第 3 方库?解析 URL 后,您可以使用std::filesystem::path
功能组合路径部分(只需 /
运算符)。
您可以查看此线程:***.com/questions/2616011/… 它可能会对您有所帮助。祝你好运
阅读RFC 3986 Section 5,它定义了如何组合和解析 URI 段
【参考方案1】:
似乎将 URI 处理添加到标准 C++ 的提议 https://isocpp.org/files/papers/n3975.html 已失效和/或卡在委员会中。
因此,您必须自己编写或使用第 3 方 - 例如,Qt 的 QUrl 带有 https://doc.qt.io/qt-5/qurl.html#resolved
QUrl QUrl::resolved(const QUrl &relative) const
【讨论】:
我期待这个结果。不幸的是,Qt 是一个非常大的框架。我更喜欢不太复杂的库。我找到了 uriparser 库:uriparser.github.io/doc/api/latest/#resolution 不幸的是它是用纯 C 编写的 - 现代 c++ 会更好以上是关于如何在 C++ 中将两个相对 URI 合二为一的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sqlite 中将两列合二为一,同时获取外键的底层值?