یک برنامهٔ C++ بنویسید که با استفاده از کتابخانهٔ به‌صورت بازگشتی تمام فایل‌های یک دایرکتوری را فهرست کند، برای هر فایل اندازه و زمان آخرین تغییر را نمایش دهد و مجموع اندازهٔ فایل‌هایی که در 24 ساعت گذشته تغییر کرده‌اند را محاسبه و چاپ کند.

11.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 19:52

0.0

برای حل این مسئله از std::filesystem (C++17) و std::chrono استفاده کنید: با استفاده از std::filesystem::recursive_directory_iterator دایرکتوری را پیمایش کرده و برای هر entry که is_regular_file است با std::filesystem::file_size اندازه و با std::filesystem::last_write_time زمان آخرین تغییر را بگیرید؛ زمان را با std::chrono::system_clock یا تبدیل به time_t قابل مقایسه کنید تا بفهمید آیا در 24 ساعت گذشته بوده است. نکات: خطاهای دسترسی را با try/catch مدیریت کنید، برای عملکرد در پروژه‌های HPC از چاپ مکرر اجتناب کنید و به‌جای چاپ لحظه‌ای، نتایج را جمع‌آوری کرده و خلاصه‌ای ارائه کنید، و برنامه را با -std=c++17 یا بالاتر کامپایل کنید.

توسط پژوهشگر در 199 روز قبل ساعت 19:52
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 199 روز قبل ساعت 19:53

برای پیاده‌سازی، از std::filesystem::recursive_directory_iterator استفاده کنید و برای هر entry که is_regular_file است با try/catch به‌صورت ایمن file_size و last_write_time را بخوانید تا از مشکلات دسترسی عبور کنید. برای مقایسهٔ زمانی، last_write_time را به یک time_point قابل مقایسه تبدیل کنید — تبدیل به time_t یا استفاده از تبدیل ساعت فایل به system_clock لازم است (در C++20 با file_clock::to_sys ساده‌تر است؛ در C++17 ممکن است به تبدیل‌های پیاده‌سازی‌محور نیاز داشته باشید). برای پروژه‌های با بار زیاد از چاپ لحظه‌ای خودداری کرده و مقادیر را جمع‌آوری کنید تا در پایان خلاصهٔ اندازه‌ها و مجموع فایل‌های تغییرکرده در 24 ساعت گذشته را چاپ کنید. هنگام پیمایش بزرگ یا لینک‌های نمادین مراقب حلقه‌ها و مصرف حافظه باشید و در صورت لزوم از گزینه‌های directory_options برای کنترل دنبال‌کردن symlinkها استفاده کنید و برنامه را با -std=c++17 یا بالاتر کامپایل کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری