Как получить полный путь для аргумента командной строки имени файла? - PullRequest
11 голосов
/ 02 ноября 2009

Я нашел много библиотек, помогающих анализировать аргументы командной строки, но ни одна из них, похоже, не имеет дело с обработкой имен файлов. Если я получаю что-то вроде «../foo» в командной строке, как мне определить полный путь к файлу?

Ответы [ 4 ]

19 голосов
/ 02 ноября 2009

Вы можете использовать boost::filesystem для получения absolute path файла из его relative path:

namespace fs = boost::filesystem;
fs::path p("test.txt");
fs::path full_p = fs::complete(p); // complete == absolute
std::cout << "The absolute path: " << full_p;
15 голосов
/ 02 ноября 2009

POSIX имеет realpath().

#include <stdlib.h>
char *realpath(const char *filename, char *resolvedname);

ОПИСАНИЕ
Функция realpath () выводит из пути, на который указывает имя файла , абсолютный путь, в котором указан тот же файл, разрешение которого не включает ".", ".." или символические ссылки. Сгенерированный путь сохраняется максимум в байтах {PATH_MAX} в буфере, указанном resolvedname .

2 голосов
/ 02 ноября 2009
1 голос
/ 02 марта 2010

В сценариях оболочки команда readlink -f имеет функцию realpath ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...