یک برنامهٔ C++ بنویسید که از ورودی ابتدا عدد n و سپس n خط شامل "LEVEL: پیام" (مثلاً INFO: فایل باز شد یا ERROR: اتصال قطع شد) را میخواند، هر پیام را با پیشوند زمان و سطح با استفاده از std::clog لاگ میکند و در پایان تعداد پیامهای INFO و ERROR را در خروجی استاندارد نمایش میدهد.
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:23 0.0
برای حل این مسأله از و بهخصوص std::clog برای نوشتن لاگها استفاده کنید؛ ورودی را با std::getline بخوانید، رشته را با جداکننده ':' به سطح (LEVEL) و متن پیام تقسیم کنید و زمان جاری را با توابع زمان استاندارد (مثلاً std::time و std::localtime یا std::chrono) اضافه کنید. لاگها را با std::clog ارسال و شمارندههای INFO/ERROR را افزایش دهید و در پایان با std::cout مجموع هر سطح را چاپ کنید؛ نکتهها: لاگ را فوراً flush کنید یا از std::endl استفاده کنید، ورودیها را trim کنید و در زمینهٔ برنامههای دسکتاپ یا سیستمها این روش برای ثبت رخدادها مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اطمینان از صحت پردازش خطوط ورودی، ابتدا مقدار n را با std::getline و سپس n خط را با نرخ ':' اول تقسیم کنید تا متن پیام در صورتی که خود پیام حاوی ':' باشد درست بماند. توصیه میکنم از std::clog با std::endl برای فلوشینگ فوری استفاده کنید تا لاگها در خروجی بنویسند و خطاها بهسرعت دیده شوند. برای اضافه کردن زمان، از std::chrono یا std::put_time استفاده کنید تا فرمت تاریخ-زمان قابل پیشبینی باشد و locale را مدنظر قرار دهید. همچنین بهتر است تابعی برای trim کردن whitespace بنویسید زیرا رشتههای ورودی ممکن است با فاصلههای اضافی همراه باشند. نهایتاً شمارش INFO و ERROR را در نهایت با std::cout چاپ کنید تا خلاصهاي خوانا ارائه شود.
گزارش