Использование Linux OpenSUSE 12.3 32-бит
Я просматриваю видеоролики Бартоша Милевски о параллелизме С++ 11 на YouTube. В части 5 он использует свой собственный файл filesystem.h в примере, где создается несколько потоков для чтения всех файлов в каталоге и его подкаталогах. Поэтому я решил использовать методы файловой системы boost, так как у меня нет к нему доступа. Я не могу понять, как вызвать is_directory для directory_iterator.
На самом деле у меня нет обычных методов для итератора каталогов. Я использую версию boost 1.54, загруженную с сайта. Я также использую Qt Creator (2.8.1), и его автозаполнение для directory_iterator не показывает никаких полезных функций. Я использовал boost для получения file_size() файла, поэтому я предполагаю, что он был установлен правильно. Я также взглянул на то, что устарело, и, похоже, ничего не нашел в directory_iterator.
я пробовал
itr.is_directory
*itr.is_directory
boost::filesystem::is_directory(itr->status()) //doesn't have the member function status
boost::filesystem::is_directory(boost::filesystem::status(itr))
itr.status();
itr->status();
Это код из примера Бартоша Милевски (еще не совсем законченный)
test2.cpp
#include <iostream>
#include <string>
#include <thread>
#include <future>
#include <chrono>
#include <vector>
#include <boost/filesystem.hpp>
typedef std::vector<std::string> string_vector;
namespace fs=boost::filesystem;
string_vector listDirectory(std::string && dir)
{
string_vector listing;
std::string dirStr("\n> ");
dirStr += dir;
dirStr += ":\n";
listing.push_back(dirStr);
std::vector<std::future<string_vector>> futures;
for (fs::directory_iterator itr(dir); itr !=fs::directory_iterator(); ++itr)
{
если (itr.is_directory); здесь мне нужно узнать, является ли это каталогом
{
}
else
{
}
}
return listing;
}
int main()
{
std::string root= "/home/craig/";
auto ftr = std::async(std::launch::async, &listDirectory, root);
try
{
string_vector listing = ftr.get();
}
}
автодополнение показывает следующее в Qt Creator (автозаполнение в скобках)
itr-> [mref, operator ->,operator Reference *,proxy]