2016-12-19 4 views
0

При использовании симулятора и открытии терминала в узле мне нужно прочитать файл из родительского каталога, который начинается с текущего имени каталога. Структура состоит в следующем:C++ получить путь к каталогу, разделить имя папки и содержимое файла печати из родительского каталога

/path/to/directory/session#/node.conf 
         | 
         |_node.xy 

я могу получить текущий путь (а также родительский путь) /path/to/directory/session#/node.conf с использованием библиотеки наддува.

std::string cwd = getcwd(NULL, 0); 
boost::filesystem::path p1(cwd); 
... p1.parent_path() 

Я не знаком с Boost, но я хотел бы получить имя папки только node.conf, разобрать, чтобы получить node, перейдите в родительский каталог и читать из файла под названием node.xy.

Каков наилучший способ сделать это? Я искал другие вопросы здесь, но не мог найти тот, который работал на меня.

Thanks

ответ

0

Boost Filesystem богат методами. Есть много способов сделать то же самое. Всегда держите документы удобными, они вам понадобятся.

Documentation Links

Reference Documentation

Итак:

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

int main() 
{ 
    namespace bfs= boost::filesystem; 

    bfs::path p1("/path/to/directory/session#/node.conf"); 
    bfs::path target(p1.parent_path()/"_node.xy"); 
    std::cout << target << std::endl; 
    //or 
    bfs::path targ2(p1); 
    targ2.remove_filename(); 
    targ2/= "_node.xy"; 
    std::cout << targ2 << std::endl; 
    return 0; 
} 
Смежные вопросы