با استفاده از تابع std::strstr از هدر <cstring> برنامهای به زبان C++ بنویسید که در یک رشتهٔ ورودی (مثلاً کد سادهٔ یک مفسر یا متن حاوی عبارات ریاضی) به دنبال یک زیررشتهٔ مشخص مثل "print" یا "sin" بگردد و اگر یافت شد، اندیس (موقعیت) اولین وقوع آن را چاپ کند و در غیر این صورت پیام مناسب نمایش دهد.
13.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:39 0.0
این مسئله را با استفاده از هدر <cstring> و تابع std::strstr حل کنید: ابتدا رشتهٔ سرچ و الگوی مورد نظر را به صورت C-style (const char*) فراهم کنید یا از std::string::c_str() برای تبدیل استفاده کنید، سپس std::strstr را فراخوانی کنید که اشارهگری به اولین وقوع زیررشته برمیگرداند یا nullptr اگر وجود نداشته باشد؛ برای محاسبهٔ اندیس کافی است اختلاف اشارهگر بازگشتی و اشارهگر ابتدای رشته را محاسبه نمایید. نکتهها: مطمئن شوید رشتهها null-terminated هستند، به nullptr برگشتی چک کنید و این روش در پردازش اولیهٔ توکنها برای مفسرها یا تشخیص توابع ریاضی در متون علمی مفید است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای استفاده از std::strstr حتماً از رشتههای C-Style با خاتمهٔ '\0' استفاده کنید و بررسی nullptr بازگشتی را فراموش نکنید. بهدلیل اینکه strstr به اولین وقوع زیررشته اشاره میکند، برای محاسبهٔ اندیس لازم است تفاوت پوزیشن دو اشارهگر را از هم کم کنید (ptr_sub - data). نکتهٔ مهم: اگر الگو خالی باشد، strstr برابر با ابتدایش را برمیگرداند، و اگر پیدا نشود nullptr برمیگردد. همچنین در حالتهای کار با std::string میتوانید از .c_str() برای گرفتن const char* استفاده کنید تا با این تابع همساز باشد.
گزارش