Метод lexically_normal
Метод lexically_normal класса path возвращает новый объект path, представляющий лексически нормализованную форму исходного пути. Нормализация выполняется чисто лексически, то есть без обращения к файловой системе. Метод убирает избыточные разделители, элементы "." и сворачивает элементы ".." вместе с предшествующими им обычными элементами. Метод не принимает параметров и не изменяет исходный объект.
Синтаксис
path.lexically_normal()
Пример
Давайте нормализуем путь, содержащий избыточные разделители и элементы ".":
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "a/./b//c";
cout << p.lexically_normal() << endl;
return 0;
}
Результат выполнения кода:
"a/b/c"
Пример
Давайте нормализуем путь, содержащий элементы "..", которые можно свернуть:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "a/b/../c";
cout << p.lexically_normal() << endl;
return 0;
}
Результат выполнения кода:
"a/c"
Пример
Давайте нормализуем путь, в котором элементы ".." стоят в начале и не могут быть свернуты:
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main()
{
fs::path p = "../a/../b";
cout << p.lexically_normal() << endl;
return 0;
}
Результат выполнения кода:
"../b"
Смотрите также
-
класс
path,
который представляет путь к файлу или каталогу -
метод
parent_path,
который возвращает родительский каталог пути -
метод
filename,
который возвращает имя файла из пути -
метод
is_absolute,
который проверяет, является ли путь абсолютным