gpt4 book ai didi

c++ - 如何使用 C++ 解析 vector 的路径

转载 作者:行者123 更新时间:2023-11-28 03:38:32 27 4
gpt4 key购买 nike

我需要将“路由器”的 URL 的路径部分解析为 REST Web 服务的一部分。我正在使用 PION 库来处理 HTTP 请求。这个库似乎没有任何用于检索部分 URL 路径的功能——至少看起来是这样。我找不到另一个这样做的图书馆。 http://www.w3.org/Library/src/HTParse.c例如,不给出部分路径。

是否有更快、更可靠的方法:

std::vector<std::string> parsePath(std::string path)
{
std::string delimiter = "/";
std::string part = "";
std::size_t firstPos = 0;
std::size_t secondPos = 0;
std::vector<std::string> parts;

while (firstPos != std::string::npos)
{
firstPos = path.find(delimiter, firstPos);
secondPos = path.find(delimiter, firstPos + 1);
part = path.substr(firstPos + 1, (secondPos - 1) - firstPos);
if (part != "") parts.push_back(part);
firstPos = secondPos;
}

return parts;
}

最佳答案

如果你有自由使用Boost , 解析文件系统路径的最简单方法是使用 filesystem library ,它具有独立于平台并处理 POSIX 和 Windows 路径变体的优势:

boost::filesystem::path p1("/usr/local/bin");
boost::filesystem::path p2("c:\\");
std::cout << p1.filename() << std::endl; // prints "bin"
std::cout << p1.parent_path() << std::endl; // prints "/usr/local"

要遍历路径的每个元素,您可以使用 path iterator :

for (auto const& element : p1)
std::cout << element << std::endl;

打印

"/"
"usr"
"local"
"bin"

没有 Boost,选择 one of the many ways to parse a delimited string .

关于c++ - 如何使用 C++ 解析 vector 的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10099206/

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