使用 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();
}
我无法弄清楚如何使用 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();
}