Ускорение файловой системыlyly_canonical не разрешает относительные пути без родительских папок - PullRequest
0 голосов
/ 09 мая 2019

Я хочу получить абсолютный канонический путь, учитывая относительный путь с файловой системой boost, который будет использоваться как в Windows, так и в Linux.Я хочу, чтобы это работало и для несуществующих путей.

Я использую слабый_каноник (путь относительный путь), доступный начиная с повышения 1.60, чтобы сделать это.Но он не работает должным образом (по крайней мере, в окнах).

При передаче относительного пути без родительских папок, то есть необработанного имени файла или имени папки, такого как "foo", слабый_канонический возвращает тот же нетронутый путь ("foo "в данном случае), тогда как absolute (pathlativePath) добавляет к нему текущий путь (как я и ожидал) (" current_dir / foo ").

Итак, наконец, я вынужден сначала вызвать абсолютный, а затемweakly_canonical, чтобы заставить его работать.

См. фрагмент с двумя случаями.

#include <string>
#include <iostream>
#include <boost/filesystem.hpp>

using boost::filesystem;

path relativePath("foo");

path canonical_path = weakly_canonical(relativePath);

path abs_canonical_path = weakly_canonical(absolute(relativePath));

std::cout << "Using weakly_canonical: "<<canonical_path.string()<<std::endl;

std::cout << "Using weakly_canonical and absolute: "<<abs_canonical_path.string()<<std::endl;

Например, если current_path равен "C: \ path \ to \ some \ folder", я получаю:

  1. lativePath = "./foo"

Использование слабо-канонического: C: \ path \ to \ some \ folder \ foo Использование слабо-канонического и абсолютного: C: \ path\ к \ некоторые \ папка \ Foo

lativePath = "../foo"

Использование слабо-канонического: C: \ path \ to \ some \ foo Использование слабо-канонического и абсолютного: C: \ path \ to \ some \ foo

lativePath = "foo"

Использование слабо-канонического: foo Использование слабо-канонического и абсолютного: C: \ path \ to \ some \ folder \ foo

Этот последний случай - то, что озадачиваетя, потому что я ожидаю, что weakly_canonical также добавит текущий рабочий каталог.

Правильно ли использовать абсолютное и слабо_каноническое вместе?Или я неправильно использую слабо-канонический?

...