使用 std::filesystem::path 确定某个相对目录是否是绝对路径的一部分

Determine if some relative directory is part of absolute path using std::filesystem::path

我无法弄清楚如何使用 std::filesystem::path 来确定绝对路径中是否包含一些相对目录,但仍然没有成功。我有以下代码和平:

const std::filesystem::path absolutePath = "/Users/user/Library/Preferences";
const std::filesystem::path relativePath = "Library/Preferences";
bool isSubDir = isSubDirectory(absolutePath, relativePath);
在这种情况下,

isSubDirectory 应该 return 为真。感谢任何帮助。

std::filesystem::path class 提供指向第一个元素和最后一个元素的迭代器。所以你可以使用 std::search:

在绝对路径中搜索相对路径
#include <algorithm>
#include <filesystem>

namespace fs = std::filesystem;

bool isSubDirectory(const fs::path& absolutePath, const fs::path& relativePath)
{
    auto it = std::search(absolutePath.begin(), absolutePath.end(), relativePath.begin(), relativePath.end());
    return it != absolutePath.end();
}