با استفاده از std::strtok در C++ رشته‌ای شامل اعداد صحیح جداشده با فاصله و/یا کاما را به توکن تقسیم کرده و مجموع اعداد را محاسبه کنید.

2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:47

0.0

برای حل این مسئله رشته ورودی را در یک بافر قابل تغییر (مثلاً یک آرایه char یا std::vector که انتهای آن '\0' دارد) کپی کنید، سپس با استفاده از تابع std::strtok از هدر و شمارنده‌های جداکننده مانند " ,"\، توکن‌ها را استخراج نمایید؛ هر توکن را با std::atoi یا std::stoll به عدد تبدیل کرده و به جمع اضافه کنید. توجه داشته باشید که std::strtok بافر را تغییر می‌دهد، باید قبل از تبدیل بررسی کنید که توکن برابر nullptr نیست و برای جمع مقادیر بزرگ از نوع مناسب مانند long long استفاده کنید و در مواجهه با توکن‌های غیرعددی یا چند جداکننده پیاپی رفتار مناسبی (نادیده گرفتن یا گزارش خطا) تعریف کنید.

توسط پژوهشگر در 220 روز قبل ساعت 01:47
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 220 روز قبل ساعت 12:00

استفاده از std::strtok برای تقسیم رشته به توکن‌های اعداد مفید است اما باید بافر قابل تغییر کپی شود. همچنین strtok بافر را تغییر می‌دهد، پس باید پیش از تبدیل توکن‌ها بررسی کنید که NULL نیستند و جداکننده‌ها را به درستی تعریف کنید. برای جمع اعداد بزرگ از long long استفاده کنید و در برابر توکن‌های غیرعددی یا چند جداکننده پیاپی رفتار مناسبی مثل نادیده‌گرفتن انتخاب کنید. ضمناً strtok در محیط‌های چندنخی ایمن نیست؛ استفاده از strtok_r یا روش‌های مدرن‌تر همچون std::stringstream می‌تواند گزینه بهتری باشد.

گزارش

1 پاسخ

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

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