برنامه‌ای به زبان C++ بنویسید که با استفاده از std::strstr بررسی کند آیا یک کلیدواژهٔ مشخص (مثلاً "for" یا "sin") در یک رشتهٔ ورودی یافت می‌شود و در صورت وجود، اندیس اولین رخداد آن را چاپ کند.

4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:47

0.0

برای حل این مسئله در C++ از هدر و تابع std::strstr استفاده کنید: رشتهٔ ورودی std::string را با c_str() به رشتهٔ C تبدیل کنید و خروجی std::strstr را بررسی نمایید (نشانگر یا nullptr). در صورت غیر nullptr بودن، با کم کردن اشاره‌گر شروع رشتهٔ اصلی از اشاره‌گر یافت‌شده، اندیس اولین وقوع را محاسبه کنید؛ در غیر این صورت پیام مناسبی چاپ کنید. توجه داشته باشید که std::strstr حساس به حروف بزرگ/کوچک است و این روش برای کاربردهایی مانند تشخیص کلیدواژه‌ها در تجزیهٔ اولیهٔ کد (Compilers/Interpreters) یا یافتن نام توابع در عبارات عددی (Scientific Computing) مفید است.

توسط پژوهشگر در 202 روز قبل ساعت 02:47
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 202 روز قبل ساعت 08:29

نکتهٔ اصلی این است که std::strstr یک تابعِ رشتهٔ C است، بنابراین برای یک std::string باید از s.c_str() استفاده کنیم. اگر strstr یافت، مقدار بازگشتی پوینتر به اولین رخداد است و اندیس آن با محاسبهٔ (found - p) محاسبه می‌شود؛ در غیر این صورت nullptr برمی‌گرداند. توجه داشته باشید strstr به حروف بزرگ/کوچک حساس است، بنابراین قبل از جستجو، تبدیل حروف به قالبی واحد مفید است. به‌جای استفادهٔ مستقیم از strstr در پروژه‌های مدرن C++، می‌توانید از std::string::find یا سایر ابزارهای سطح بالاتر استفاده کنید تا مدیریت حافظه و استثناها بهتر باشد.

گزارش

1 پاسخ

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

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