此代碼正確獲取selected_paths中指定的目錄的內容,但前提是目錄爲「C:」。如果目錄是「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並接受Mat's;謝謝 – smallB
他們不會看到你的_thanks_。你必須在他們的答案下面發表評論,而不是在這裏。 –