Как заполнить список в C ++ всеми папками в каталоге - PullRequest
0 голосов
/ 02 декабря 2011

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

Ответы [ 2 ]

4 голосов
/ 02 декабря 2011

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

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

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

Впрочем, для начинающих это крутой подъем.


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

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

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

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

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

Если вы хотите привязать себя к определенной операционной системе или реализации - например, выполнять вызовы функций, доступных только в Windows, или только в Linux под GTK, или только в MacOS - тогда у вас есть доступ к тому, что эта платформа + инструментарий обеспечивает. Но поскольку C ++ не зависит от платформы, когда вы пересекаете эту черту, вы больше не программируете на «просто C ++», и ваши вопросы и теги в 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


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

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

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

3 голосов
/ 08 декабря 2011

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

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

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

...