Форум программистов, компьютерный форум, киберфорум
Наши страницы

Boost C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,384
Записей в блоге: 17
#1

boost::filesystem Относительный путь - Boost C++

11.02.2013, 21:29. Просмотров 1760. Ответов 4
Метки нет (Все метки)

Допустим есть путь
C:\A\B\D\e.txt
Можно ли (и как ?) получить путь относительно другого пути ( или текущего каталога ) к примеру каталога B т.е
Код
D\e.txt
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2013, 21:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос boost::filesystem Относительный путь (Boost C++):

boost filesystem - Boost C++
Всем привет! В студии при построении проекта с подключенным boost/filesystem.hpp ошибка LINK : fatal error LNK1104: не удается...

boost.filesystem - Boost C++
Всем привет! Проблема в следующем. Если пытаюсь скомпилировать код, содержащий включение каких либо хидеров из boos.filesystem,...

boost::filesystem - Boost C++
Доброго времени суток. Подскажите пожалуйста, как можно преобразовать path в char*?

boost::filesystem и искючения - Boost C++
При поиске файлов к примеру на диске C:\ можно получить к примеру такое сообщение. После чего поиск может прекратится... Можно ли...

Не удается подключить boost::filesystem - Boost C++
Решил начать изучать boost::filesystem - в итоге ошибки линковщика. Делал все как здесь начиная с пункта 4(boost установил с помощью...

не могу разобраться c boost.filesystem - Boost C++
не как не могу разобрать с boost.filesystem. Нужно записать содиржимое католога в массив. Но не как не могу понять как это сделать. Нашел...

4
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
12.02.2013, 00:53 #2
Все что возможно описано тут http://www.boost.org/doc/libs/1_53_0...position-table
0
Avazart
Эксперт С++
7432 / 5471 / 310
Регистрация: 10.12.2010
Сообщений: 24,384
Записей в блоге: 17
12.02.2013, 01:42  [ТС] #3
Цитата Сообщение от ForEveR Посмотреть сообщение
Все что возможно описано тут http://www.boost.org/doc/libs/1_53_0...position-table
Т.е. нет, как я понимаю
0
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
12.02.2013, 02:40 #4
Avazart, с replace можно поиграться...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <fstream>
#include <iostream>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
 
int main()
{
    namespace fs = boost::filesystem;
 
    const std::string file = "C:\\Games\\Carma\\test.txt";
    std::ofstream ifs(file.c_str());
    if (!ifs)
    {
        std::cerr << "Error" << std::endl;
        std::cin.get();
        return 1;
    }
    ifs.close();
    fs::path path(file);
    std::cout << path.string() << std::endl;
    while (!path.empty())
    {
        std::string new_n = path.relative_path().string();
        boost::replace_first(new_n, "\\", ":");
        if (new_n == path.relative_path().string())
        {
            break;
        }
        path = fs::path(new_n);
        new_n = path.string();
        boost::replace_first(new_n, ":", "\\");
        std::cout << new_n << std::endl;
    }
    std::cin.get();
}
А только с помощью fs кажись нет.

Добавлено через 4 минуты
Ну или отрезать filename, и потом до тех пор пока не нашли нужную папку делать parent_path...
0
igorrr37
1663 / 1291 / 143
Регистрация: 21.12.2010
Сообщений: 1,967
Записей в блоге: 9
07.04.2013, 16:25 #5
Я как то делал такое через path::iterator, std::mismatch и /=. Вот такая ф-ция была
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void Transfer()
    {
        std::string sFilePath, sSavePath;
        std::cout << "Input path to file/directory\n";
        std::getline(std::cin, sFilePath);
        std::cout << "Input path to save file/directory to server\n";
        std::getline(std::cin, sSavePath);
        bfs::path filePath(sFilePath), savePath(bfs::path(sSavePath) / filePath.filename());
        if(bfs::exists(sFilePath) && bfs::is_directory(sFilePath))
        {
            TransferDirectory(filePath, savePath);
            bfs::path origFilePath, resultSavePath;
            std::pair<bfs::path::iterator, bfs::path::iterator> pair;
            for(bfs::recursive_directory_iterator rdib(sFilePath), rdie; rdib != rdie; ++rdib)
            {
                origFilePath = rdib->path();
                pair = std::mismatch(origFilePath.begin(), origFilePath.end(), filePath.begin());
                resultSavePath = savePath;
                for(auto ib(pair.first), ie(origFilePath.end()); ib != ie; ++ib)
                {
                    resultSavePath /= *ib;
                }
                if(bfs::is_directory(origFilePath))
                    TransferDirectory(origFilePath, resultSavePath);
                else
                    TransferFile(origFilePath, resultSavePath);
            }
        }
        else
        {
            TransferFile(filePath, savePath);
        }
    }
3
07.04.2013, 16:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2013, 16:25
Привет! Вот еще темы с ответами:

Узнать о переименовании файла (boost::filesystem) - Boost C++
Всем хорошего времени :) У меня есть процесс, который мониторит папку. если там какой-то файл изменяется, он предпринимает определенные...

Boost::filesystem::copy_file не копирует файлы - Boost C++
Вот код:#include &lt;iostream&gt; #include &lt;vector&gt; #define BOOST_NO_CXX11_SCOPED_ENUMS #include &lt;boost/filesystem.hpp&gt; #include...

[boost::filesystem] Как пройтись по каталогу, включая вложенные каталоги ? - Boost C++
Доброго времени суток. Нужно скопировать в вектор все файлы в каталоге, включая файлы, находящиеся во вложенных каталогах. ...

Просмотреть с помощью boost::filesystem все файлы в рандомном каталоге, и вывести названия файлов - Boost C++
Доброго времени суток, помогите плиз. Как с помощью библиотеки boost::filesystem просмотреть все файлы в рандомном каталоге и вывести...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.