2011-08-04 121 views
7

CẬP NHẬT: Do việc chấp nhận C++ 17, có một tiêu đề <filesystem> được bao gồm trong ngôn ngữ thực hiện chính xác điều này. Xem tài liệu của trình biên dịch của bạn để xem liệu nó có được hỗ trợ hay không.Duyệt qua cây thư mục trong C++

gốc câu hỏi:

này là một sự tò mò của tôi trong một thời gian: làm thế nào để bạn đi qua một cây thư mục mà không sử dụng tăng hoặc bất kỳ thư viện của bên thứ ba? Chỉ cần đồng bằng ol 'C + + (ví dụ trong 98, 99, 01, 0x và thông số kỹ thuật 1x là okay.)? Nó đã được thực hiện trở lại trong ngày trước khi tăng tồn tại vì vậy có phải là một cách để làm điều đó.

+2

Bạn biết đấy, tăng * là * C++, nó không phải là ma thuật. Nếu bạn không thể sử dụng tăng, bạn vẫn có thể * nhìn * ở mức tăng và xem nó hoạt động như thế nào. –

Trả lời

6

Hãy xem tại http://en.wikipedia.org/wiki/Dirent.h

Các tài liệu tham khảo cũng có một liên kết để thực hiện dirent.h cho Windows hoặc bạn có thể sử dụng Cygwin

Nếu bạn muốn chỉ làm điều đó cho Windows, bạn có thể xây dựng dựa trên này Ví dụ

http://msdn.microsoft.com/en-us/library/aa365200%28VS.85%29.aspx

+0

câu trả lời tốt hơn so với tôi – Tim

+1

'" Microsoft Visual C++ không bao gồm dirent.h "' Đáng buồn thay, đây là trình biên dịch tôi đang sử dụng. :( – Casey

4

không có chức năng hệ thống tập tin tiêu chuẩn, do đó bạn sẽ không nhận được bất kỳ câu trả lời mà sử dụng "đồng bằng C++". Đối với các hệ thống POSIX, opendir được sử dụng. Đối với Windows, FindFirstFile. Tôi không chắc chắn về các hệ điều hành khác.

Có lý do khiến mọi người đề xuất Boost Filesystem — là thiết bị di động và đảm nhiệm tất cả các chi tiết này cho bạn.

Các vấn đề liên quan