Вопрос

У меня есть файл, который описывает входные данные, которые разделены на несколько других файлов. В моем файле дескриптора я впервые даю путь а. Это говорит, где все остальные файлы найдены.

Создатель может установить либо относительную (к определению файла дескриптора), либо абсолютный путь.

Когда моя программа вызывается, пользователь дает имя файла дескриптора. Это может быть не в текущем рабочем каталоге, поэтому Имя файла B. Дано может также содержать каталоги.

Для моей программы всегда найдите входные файлы в нужных местах, мне нужно объединить эту информацию. Если путь А. Дано абсолютно, мне нужно просто этому. Если это относительно, мне нужно объединить его на путь Преступность (то есть часть каталога имени файла).

я думал boost::filesystem::complete может сделать работу для меня. К сожалению, кажется, это не так. Я также не понял, как проверить, что данный путь является абсолютным или нет.

Есть идеи?

Это было полезно?

Решение

На самом деле я был совершенно ошибочным, но теперь нашел решение сам. Когда «база» удерживает путь A, а имени файла выполнены B:

boost::filesystem::path basepath(base), filepath(filename);
if (!basepath.is_complete())
    basepath = filepath.remove_leaf() /= basepath;
base = basepath.string();

Он работает с Linux по крайней мере (где было бы очень легко обойтись без повышения, но ой хорошо ..), все еще нужно проверить с Windows.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top