Форум программистов, компьютерный форум, киберфорум
Наши страницы
Boost C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.65/17: Рейтинг темы: голосов - 17, средняя оценка - 4.65
nickionn
0 / 0 / 1
Регистрация: 23.07.2011
Сообщений: 14
1

не могу разобраться c boost.filesystem

07.04.2012, 15:02. Просмотров 3193. Ответов 12
Метки нет (Все метки)

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

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
path p ("./");
  try
  {
    if (exists(p))    // does p actually exist?
    {
      if (is_regular_file(p))        // is p a regular file?
        cout << p << " size is " << file_size(p) << '\n';
 
      else if (is_directory(p))      // is p a directory?
      {
        cout << p << " is a directory containing:\n";
 
        copy(directory_iterator(p), directory_iterator(),  // directory_iterator::value_type
          ostream_iterator<directory_entry>(cout, "\n"));  // is directory_entry, which is
                                                           // converted to a path by the
                                                           // path stream inserter
      }
      else
        cout << p << " exists, but is neither a regular file nor a directory\n";
    }
    else
      cout << p << " does not exist\n";
  }
 
  catch (const filesystem_error& ex)
  {
    cout << ex.what() << '\n';
  }
например тут выводиться содержимое каталога. А как сделать тоже самое только записать в массив?Уже всю голову сломал.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2012, 15:02
Ответы с готовыми решениями:

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

boost filesystem
Всем привет! В студии при построении проекта с подключенным boost/filesystem.hpp ошибка LINK :...

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

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

boost::filesystem Относительный путь
Допустим есть путь Можно ли (и как ?) получить путь относительно другого пути ( или текущего...

12
soon
2547 / 1312 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.04.2012, 15:09 2
http://www.boost.org/doc/libs/1_49_0...ample/tut4.cpp
1
igorrr37
1998 / 1579 / 794
Регистрация: 21.12.2010
Сообщений: 2,712
Записей в блоге: 10
07.04.2012, 15:32 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
cout << p << " is a directory containing:\n";
            directory_entry arr[20];
            directory_iterator it(p), itEnd;
            int i;
            for(i = 0; it != itEnd; ++it, ++i)
            {
                arr[i] = *it;
                cout << arr[i] << endl;
            }
            cout << i << endl;
          }
          else
            cout << p << " exists, but is neither a regular file nor a directory\n";
1
nickionn
0 / 0 / 1
Регистрация: 23.07.2011
Сообщений: 14
07.04.2012, 15:39  [ТС] 4
спасибо, только одного не пойму вот тут
C++
1
2
3
4
        for (vec::const_iterator it(v.begin()), it_end(v.end()); it != it_end; ++it)
        {
          cout << "   " << *it << '\n';
        }
*it вывести можно, а в массив строк записать нельзя?
0
igorrr37
1998 / 1579 / 794
Регистрация: 21.12.2010
Сообщений: 2,712
Записей в блоге: 10
07.04.2012, 16:00 5
можно
C++
1
2
3
4
5
6
7
8
cout << p << " is a directory containing:\n";
            directory_iterator it(p), itEnd;
            std::vector<std::string> v;
            for(; it != itEnd; ++it)
            {
                v.emplace_back(it->path().string());
            }
            std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
1
nickionn
0 / 0 / 1
Регистрация: 23.07.2011
Сообщений: 14
07.04.2012, 16:59  [ТС] 6
прик копмиляции
C++
1
2
3
4
5
6
7
8
cout << p << " is a directory containing:\n";
            directory_iterator it(p), itEnd;
            std::vector<std::string> v;
            for(; it != itEnd; ++it)
            {
                v.emplace_back(it->path().string());
            }
            std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));

class std::vector<std::basic_string<char> >» has no member named «emplace_back»
0
soon
2547 / 1312 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.04.2012, 17:04 7
Обновите компилятор, либо замените на push_back
1
nickionn
0 / 0 / 1
Регистрация: 23.07.2011
Сообщений: 14
07.04.2012, 18:41  [ТС] 8
обновил тоже самое. C push_back:

/usr/bin/ld: /tmp/ccxzXhbl.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv'
/usr/bin/ld: note: '_ZN5boost6system15system_categoryEv' is defined in DSO /usr/lib/libboost_system.so.1.49.0 so try adding it to the linker command line
/usr/lib/libboost_system.so.1.49.0: could not read symbols: Invalid operation
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
0
soon
2547 / 1312 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.04.2012, 18:47 9
boost_system прилинкована?
1
nickionn
0 / 0 / 1
Регистрация: 23.07.2011
Сообщений: 14
07.04.2012, 20:06  [ТС] 10
раньше линковал -lboost_filesystem. А вот с -lboost_system, работает. Но

уже вот такая
ошибка
Код
/tmp/ccZeDPqF.o: In function `boost::filesystem3::exists(boost::filesystem3::path const&)':
test.cpp:(.text._ZN5boost11filesystem36existsERKNS0_4pathE[_ZN5boost11filesystem36existsERKNS0_4pathE]+0x19): undefined reference to `boost::filesystem3::detail::status(boost::filesystem3::path const&, boost::system::error_code*)'
/tmp/ccZeDPqF.o: In function `boost::filesystem3::is_directory(boost::filesystem3::path const&)':
test.cpp:(.text._ZN5boost11filesystem312is_directoryERKNS0_4pathE[_ZN5boost11filesystem312is_directoryERKNS0_4pathE]+0x19): undefined reference to `boost::filesystem3::detail::status(boost::filesystem3::path const&, boost::system::error_code*)'
/tmp/ccZeDPqF.o: In function `boost::filesystem3::is_regular_file(boost::filesystem3::path const&)':
test.cpp:(.text._ZN5boost11filesystem315is_regular_fileERKNS0_4pathE[_ZN5boost11filesystem315is_regular_fileERKNS0_4pathE]+0x19): undefined reference to `boost::filesystem3::detail::status(boost::filesystem3::path const&, boost::system::error_code*)'
/tmp/ccZeDPqF.o: In function `boost::filesystem3::file_size(boost::filesystem3::path const&)':
test.cpp:(.text._ZN5boost11filesystem39file_sizeERKNS0_4pathE[_ZN5boost11filesystem39file_sizeERKNS0_4pathE]+0x19): undefined reference to `boost::filesystem3::detail::file_size(boost::filesystem3::path const&, boost::system::error_code*)'
/tmp/ccZeDPqF.o: In function `boost::filesystem3::detail::dir_itr_imp::~dir_itr_imp()':
test.cpp:(.text._ZN5boost11filesystem36detail11dir_itr_impD2Ev[_ZN5boost11filesystem36detail11dir_itr_impD5Ev]+0x24): undefined reference to `boost::filesystem3::detail::dir_itr_close(void*&, void*&)'
/tmp/ccZeDPqF.o: In function `boost::filesystem3::directory_iterator::directory_iterator(boost::filesystem3::path const&)':
test.cpp:(.text._ZN5boost11filesystem318directory_iteratorC2ERKNS0_4pathE[_ZN5boost11filesystem318directory_iteratorC5ERKNS0_4pathE]+0x57): undefined reference to `boost::filesystem3::detail::directory_iterator_construct(boost::filesystem3::directory_iterator&, boost::filesystem3::path const&, boost::system::error_code*)'
/tmp/ccZeDPqF.o: In function `boost::filesystem3::directory_iterator::increment()':
test.cpp:(.text._ZN5boost11filesystem318directory_iterator9incrementEv[_ZN5boost11filesystem318directory_iterator9incrementEv]+0x19): undefined reference to `boost::filesystem3::detail::directory_iterator_increment(boost::filesystem3::directory_iterator&, boost::system::error_code*)'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
0
soon
2547 / 1312 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.04.2012, 20:15 11
А у меня все линкуется без проблем
out
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
soon@desktop:~/Src/C++/main$ make && ./main ./
g++ -c -Wall -D_GLIBCXX_USE_NANOSLEEP -O3 --std=gnu++11 main.cpp -o main.o
g++ main.o -lm -lboost_regex -lboost_filesystem -lboost_system -o main
"./" is a directory containing:
   "./.Makefile.swp"
   "./.main.cpp.swl"
   "./.main.cpp.swm"
   "./.main.cpp.swn"
   "./.main.cpp.swo"
   "./.main.cpp.swp"
   "./Makefile"
   "./foo.cpp"
   "./foo.hpp"
   "./main"
   "./main.cpp"
   "./main.o"
   "./tags"
   "./test.txt"
soon@desktop:~/Src/C++/main$
0
nickionn
0 / 0 / 1
Регистрация: 23.07.2011
Сообщений: 14
07.04.2012, 21:55  [ТС] 12
C++
1
2
3
4
5
6
7
8
cout << p << " is a directory containing:\n";
            directory_iterator it(p), itEnd;
            std::vector<std::string> v;
            for(; it != itEnd; ++it)
            {
                v.emplace_back(it->path().string());
            }
            std::copy(v.begin(), v.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
как вот тут *it записать в string a[1] ? что-то я не догоняю
0
igorrr37
1998 / 1579 / 794
Регистрация: 21.12.2010
Сообщений: 2,712
Записей в блоге: 10
07.04.2012, 22:07 13
C++
1
string a[i] = it->path().string();
1
07.04.2012, 22:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2012, 22:07

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

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

[Code::Blocks] Не работает Boost.Filesystem
Есть скомпилированный Boost (MinGW 6.3.0), Code::Blocks 16.01, Boost 1.65. Подключаю Boost к...


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

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

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