如何在 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 合二为一的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将两个向量复制到另一个向量

如何在 Sqlite 中将两列合二为一,同时获取外键的底层值?

如何在 js 中将图像 URI 组合成 gif?

如何在 MySQL 中将多列处理为一列?

如何在数据表中将 group_concat() 列显示为一列?

如何在批处理文件中将 DOS 路径转换为文件方案 URI