Я только что скопировал следующий фрагмент кода из другого вопроса, опубликованного в Stackoverflow. И я хотел знать, как создать список файлов в каталоге, который содержит общее окончание. Я закончил понимать, как настроить свой проект, чтобы он мог включать в себя повышение библиотеки.
Однако при запуске моего кода я получаю следующее сообщение об ошибке:
D:\CPP_Dev\Create_Virtual_Raster\Create_Virtual_Raster\create_list.cpp:26:66: error: 'ret' was not declared in this scope
if (fs::is_regular_file(*it) && it->path().extension() == ext) ret.push_back(it->path().filename());
Фрагмент кода, который я только что запустил, таков:
Я уже установил повышение библиотеки, чтобы включить его в мой код.
Я проверил проблемы с точками с запятой и объявлениями типов данных.
#define BOOST_FILESYSTEM_VERSION 3
#define BOOST_FILESYSTEM_NO_DEPRECATED
#include <boost/filesystem.hpp>
#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
namespace fs = ::boost::filesystem;
// return the filenames of all files that have the specified extension
// in the specified directory and all subdirectories
string path = "D:/_TEST_MOSAICING_S1_TOOL/S1A_IW_SLC__1SDV_20180111T043843_20180111T043910_020102_02245A_1664";
string ext = ".tif";
void get_all(const fs::path& root, const string& ext, vector<fs::path>& ret)
{
if (!fs::exists(root) || !fs::is_directory(root)) return;
fs::recursive_directory_iterator it(root);
fs::recursive_directory_iterator endit;
while (it != endit)
{
if (fs::is_regular_file(*it) && it->path().extension() == ext) ret.push_back(it->path().filename());
++it;
}
}
Я только что ожидал список из трех файлов, включенных в каталог.