Составьте путь (с повышением:: файловая система)

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

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

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

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

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

Какие-либо идеи?

1
задан ypnos 4 May 2010 в 16:25
поделиться

1 ответ

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

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

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

2
ответ дан 3 September 2019 в 00:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: