Как заполнить Listbox на С++ всеми папками в каталоге

Я хотел бы знать, как перечислить всю папку в каталоге в списке. Я использую Visual С++.

Ответ 1

С++ - это язык, который не указывает какие-либо стандартные классы или функции для реализации графических интерфейсов. Он также не обеспечивает стандартный способ получения списков файлов и каталогов из операционной системы!!! На самом деле... долгое время не было даже стандарта для строковых классов, и каждый проект выбирал разные несовместимые строки.

Примечание. Несмотря на то, что теперь существует стандартный класс string, фрагментированное наследие продолжается: Почему на каждой платформе С++ существует другой класс строк?

Поэтому, когда вы отмечаете что-то "С++" или используете этот термин, он ссылается только на сам язык. Насколько это возможно, одна из самых сильных сторон заключается в том, что этот движок настолько (относительно) мощный, что вам не нужно создавать вещи, чтобы сделать их эффективными или иметь глубокий интерфейс кодирования. Пользователи этого языка обладают почти такой же мощью, чтобы создавать классные языковые функции, как если бы они могли модифицировать сам компилятор.

Это крутой холм, чтобы подняться на новичков, хотя.


Все это означает, что такой вопрос, как "Как заполнить Listbox на С++ всеми папками в каталоге?" является очень открытым. Это зависит от того, какие инструменты вы хотите использовать для графического интерфейса, и для общения с файловой системой. Некоторые инструментальные средства являются "большими" и предлагают комплексные классы для покрытия обеих областей:

http://doc.qt.nokia.com/latest/qdir.html#navigation-and-directory-operations

http://doc.qt.nokia.com/latest/itemviews-dirview.html

Другие библиотеки более узкие и обеспечивают только одну функцию. Например, "boost" - это набор почти стандартных библиотек, которые еще не попали в спецификацию С++. Есть способ перечислить файлы и каталоги с помощью С++ с помощью boost::filesystem. Это пугающе для новичков, хотя:

http://www.boost.org/doc/libs/1_48_0/libs/filesystem/v3/doc/tutorial.html

Если вы готовы связать себя с конкретной операционной системой или реализацией - например, совершать вызовы функций, доступных только в Windows, или только в Linux под GTK или только на MacOS, - тогда у вас есть доступ к тому, что эта платформа + инструментарий обеспечивает. Но поскольку С++ не зависит от платформы, как только вы пересекаете эту строку, вы больше не программируете в "просто С++", и ваш вопрос и теги в StackOverflow должны прояснить, какие варианты вы сделали.

Другие ваши вопросы о SO - о Visual Studio и VB, поэтому я предполагаю, что вы используете Windows.


Один из связанных тем, о которых вы должны знать, - это "общие диалоги". Это предоставленные удобства, чтобы каждый не мог написать свою собственную логику "Файл- > Открыть", или выбрать цвет или диалог поиска. В Microsoft некоторые из них определены в Windows:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646960(v=VS.85).aspx

Таким образом, если сбор файлов, файлов, каталогов или каталогов - это простая цель какого-то кода... это избавит вас от неприятностей. Qt имеет похожие вещи:

http://doc.qt.nokia.com/stable/qfiledialog.html#details


Вы можете изменить свой вопрос, чтобы добавить больше о ваших целях. Если вам интересно о С++ и просто хотите погрузиться и иметь хорошо документированный набор функций, которые будут работать на Windows, Mac или Linux... подумайте о том, чтобы попробовать Qt Creator:

http://www.qt.io/ide/

Microsoft действительно откидывает свою стратегию на .NET и С#, поэтому, по крайней мере, сейчас вы станете более прочными в качестве программиста на С++ GUI, если вы зайдете с Qt.

Ответ 2

Существует альтернативный, бесплатный и открытый источник, называемый Nana С++ Library (http://stdex.sourceforge.net), чистая библиотека С++ GUI.

Существует учебник по заполнению дерева с папками.

Статус библиотеки активен, и он обновляется ежемесячно. Это новая библиотека, это будет выбор для вашего хобби проекта.