یک برنامهٔ 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 کنید و در زمینهٔ برنامه‌های دسکتاپ یا سیستم‌ها این روش برای ثبت رخدادها مفید است.

توسط پژوهشگر در 221 روز قبل ساعت 01:23
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 221 روز قبل ساعت 13:28

برای اطمینان از صحت پردازش خطوط ورودی، ابتدا مقدار n را با std::getline و سپس n خط را با نرخ ':' اول تقسیم کنید تا متن پیام در صورتی که خود پیام حاوی ':' باشد درست بماند. توصیه می‌کنم از std::clog با std::endl برای فلوشینگ فوری استفاده کنید تا لاگ‌ها در خروجی بنویسند و خطاها به‌سرعت دیده شوند. برای اضافه کردن زمان، از std::chrono یا std::put_time استفاده کنید تا فرمت تاریخ-زمان قابل پیش‌بینی باشد و locale را مدنظر قرار دهید. همچنین بهتر است تابعی برای trim کردن whitespace بنویسید زیرا رشته‌های ورودی ممکن است با فاصله‌های اضافی همراه باشند. نهایتاً شمارش INFO و ERROR را در نهایت با std::cout چاپ کنید تا خلاصه‌اي خوانا ارائه شود.

گزارش

1 پاسخ

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

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