یک برنامهٔ C++ بنویسید که مسیر یک پوشه را از آرگومان خط فرمان دریافت کند، فایلهای آن پوشه را با استفاده از هدر <filesystem> بخواند، زمان آخرین تغییر هر فایل را به فرمت خوانا نمایش دهد و فهرست را بر اساس زمان آخرین تغییر به صورت نزولی مرتب کند.
28.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:21 0.0
با استفاده از std::filesystem::directory_iterator لیست فایلها را بخوانید و برای هر فایل از std::filesystem::last_write_time زمان آخرین تغییر را بگیرید. برای مرتبسازی، اطلاعات (نام فایل و زمان) را در یک بردار ذخیره کنید و با یک lambda آنها را بر اساس مقدار زمان مرتب کنید؛ برای نمایش زمان قابلفهم از تبدیل std::filesystem::file_time_type به std::chrono::system_clock::time_point و سپس std::chrono::system_clock::to_time_t و std::put_time یا std::localtime استفاده کنید. برنامه را با -std=c++17 کامپایل کنید و برای ایمنسازی رفتار، فایلهای غیرعادی را نادیده بگیرید یا خطاها را با try/catch مدیریت کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای خواندن و مرتبسازی فایلها از std::filesystem::directory_iterator استفاده کنید و همه فراخوانیهای std::filesystem::last_write_time را داخل try/catch قرار دهید تا فایلهای بدون دسترسی یا لینکخراب را نادیده بگیرید. تبدیل std::filesystem::file_time_type به زمان قابلفهم ممکن است بهدلیل epoch پیادهسازیمحور متفاوت باشد، بنابراین از تبدیلهای std::chrono::duration_cast یا روشهای معتبر برای تبدیل به std::chrono::system_clock::time_point و سپس std::chrono::system_clock::to_time_t استفاده کنید. اطلاعات (نام فایل و last_write_time) را در یک vector ذخیره و با یک lambda ساده آن را بر اساس مقدار زمان به صورت نزولی مرتب نمایید. اگر نیاز به پیمایش زیرپوشهها دارید از recursive_directory_iterator استفاده کنید و برنامه را با -std=c++17 کامپایل کنید.
گزارش