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

توسط پژوهشگر در 201 روز قبل ساعت 03:39
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 201 روز قبل ساعت 05:42

برای استفاده از std::strstr حتماً از رشته‌های C-Style با خاتمهٔ '\0' استفاده کنید و بررسی nullptr بازگشتی را فراموش نکنید. به‌دلیل اینکه strstr به اولین وقوع زیررشته اشاره می‌کند، برای محاسبهٔ اندیس لازم است تفاوت پوزیشن دو اشاره‌گر را از هم کم کنید (ptr_sub - data). نکتهٔ مهم: اگر الگو خالی باشد، strstr برابر با ابتدایش را برمی‌گرداند، و اگر پیدا نشود nullptr برمی‌گردد. همچنین در حالت‌های کار با std::string می‌توانید از .c_str() برای گرفتن const char* استفاده کنید تا با این تابع هم‌ساز باشد.

گزارش

1 پاسخ

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

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