Хранение имени файла получено с использованием библиотеки boost в переменной std :: string

Я хочу получить список всех файлов в каталоге, используя boost :: filesystem

Я могу напечатать имена файлов, используя cout но я не могу хранить имена файлов в строковой переменной. Я также пробовал приведение типов и strcpy, но ни один из методов не работает.

Ниже приведен код:

char dir[100] = "/home/harsh/";
namespace fs = boost::filesystem;

fs::directory_iterator start = fs::directory_iterator(dir);
fs::directory_iterator di = start;

for (; di != fs::directory_iterator(); ++di)
{
std::cout << "hello .. " << di->path() << std::endl;

//std::string strHarsh = di->path(); //Error
}

1

Решение

пытаться di->leaf() это должно преобразовать в строку

Также это зависит от вашей версии boost, если вы используете файловую систему v3, это будет:
di->path().filename().string()

5

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

Вы могли бы использовать std::ostringstream в качестве промежуточного:

std::ostringstream os;
os << di->path();

std::string path = os.str();
1