Member 13739457 Ответов: 1

Как я могу поместить свои файлы каталогов в структуру dat?


Я разрабатываю этот код для чтения файлов из каталога и помещаю их в список. Проблема у меня есть в том, что он не будет помещать файлы в список. Я все время получаю сообщение об ошибке

Ошибка (активная) E0304 нет экземпляра перегруженной функции "std::list<_Ty, _Alloc>: push_back [with _Ty=std::string, _Alloc=std::allocator<std::string>]" соответствует списку аргументов

Как я могу переступить через это?

#include <iostream>
#include<vector>
#include<list>
#include<map>
#include<queue>
#include<fstream>
#include<string>
#include <filesystem>
namespace fs = std::filesystem;
using namespace std;

string path = "C:/Users/deonh/Downloads/intranets/intranet1"; //This gets every single file in the directory

string path5 = "C:/Users/deonh/Downloads/intranets/intranet5";
string path7 = "C:/Users/deonh/Downloads/intranets/intranet7";
<pre>int main()
{
	list<string>pages;
	map<string, int> page;


	//Here I am printing the files to make sure the above code works.

	for (const auto& entry : fs::directory_iterator(path)) {

		cout<< entry.path()<< std::endl;
		
		pages.push_back(entry.path());

	}
	for (list<string> ::iterator it = pages.begin(); it != pages.end(); it++) {
		cout << *it << endl;
	}



	return 0;
}



Что я уже пробовал:

Я меняюсь
pages.push_back(entry.path());
к
pages.push_back(path);
и это дает мне каталог, но не включает файлы.

1 Ответов

Рейтинг:
7

phil.o

То объект класса directory_iterator[^] перечисляет поверх запись каталога[^] коллекция. То путь()[^] оператор каждой записи каталога возвращает a std::файловая система::путь[^] объект. Вы можете использовать строка()[^] функция объекта path для получения его строкового представления:

pages.push_back(entry.path().string());


CPallini

5.

phil.o

Спасибо Карло :)