このコードは、ディレクトリが "C:"の場合のみ、selected_pathsで指定されたディレクトリの内容を正しく取得します。ディレクトリが "D:"の場合、このコードは、自分のアプリケーションのルートディレクトリ(ソースファイルがあるディレクトリ、 "D:\ excercizes \ QT_projects \ my_app")を繰り返し処理します。どうしたの?boost :: filesystemのバグ?
QStringList my_app::extract_files_from_paths_(const QStringList& selected_paths)const
{
boost::filesystem3::path path;
QStringList result;
for (auto e : selected_paths)
{
boost::filesystem3::path path(e.toStdString().c_str());
if (boost::filesystem3::is_regular_file(path))
{
result.append(e);
}
else if (boost::filesystem3::is_directory(path) && !boost::filesystem3::is_empty(path))
{
std::vector<boost::filesystem3::path> paths_;
/*add everything from this path*/
std::copy(boost::filesystem3::directory_iterator(path), boost::filesystem3::directory_iterator(), // directory_iterator::value_type
std::back_inserter(paths_));
QStringList list_of_files;
for(auto e : paths_)
{
list_of_files.append(QString(e.string().c_str()));
}
return extract_files_from_paths_(list_of_files);
}
}
return result;
}
正しく動作していることを確認するまで、バグを想定しないでください。 –
@Matとybungalobillに感謝します。あなた1人につき+ 1、マットを受け入れる;ありがとう – smallB
彼らはあなたの_thanks_を見ません。ここではなく、答えの下にコメントを投稿する必要があります。 –