Как преобразовать boost :: filesystem :: directory_iterator в const char *

Я хочу перебрать все файлы в каталоге и распечатать их содержимое.
Boost прекрасно обрабатывает итерационную часть, но я не знаю, как преобразовать это в const char *,

boost::filesystem::directory_iterator path_it(path);
boost::filesystem::directory_iterator end_it;
while(path_it != end_it){
std::cout << *path_it << std::endl;

// Convert this to a c_string
std::ifstream infile(*path_it);
}

Я пытался это прочитать документация но не смог найти ничего похожего string или же c_str(), Я новичок в обоих C++ а также boost и надеялся найти javadoc как документация, которая в основном рассказывала бы мне, какие члены были и какие функции были доступны вместо выгрузки исходного кода.

Извините за напыщенную речь, но может кто-нибудь сказать мне, как конвертировать *path_it в c string,

11

Решение

Когда вы разыменовываете итератор, он возвращает directory_entry:

const directory_entry& entry = *path_it;

Вы можете использовать это вместе с operator<< а также ostream, как вы обнаружили:

std::cout << entry << std::endl;

Вы можете создать строку, используя ostringstream:

std::ostringstream oss;

oss << entry;

std::string path = oss.str();

Кроме того, вы можете получить доступ к пути как string прямо из directory_entry:

std::string path = entry.path().string();
18

Другие решения

Посмотрев документацию, я думаю, что вы можете выполнить path_it-> path (). C_str (), так как directory_iterator выполняет итерацию по каталогу directory_entry, который имеет функцию path, которая, в свою очередь, имеет функцию c_str.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector