یکی از کاربردیترین بخشهای زبان برنامهنویسی ++C/C مربوط میشود به کار با string یا رشته. دلیل این نامگذاری هم این است که رشتهای از کارکترها یک string را میسازند. این موضوع در زبان C ملموستر است. چراکه ما به طور مستقیم متغیری از جنس string نداریم و برای داشتن یک رشته باید آرایهای از جنس char تعریف کنیم. اگر چه در ++C هم میتوان به همان روش رشته و به اصطلاح C-string داشت. اما با توجه به ویژگیهایی که در کلاس std::string پیادهسازی شده، استفاده از این کلاس اولویت دارد.
کلاس std::string
همانطور که اشاره کردم، با کمک این کلاس میتوان شیای برای ذخیره یک رشتهی متنی ایجاد کرد. علاوه بر این member function های مفیدی هم در این کلاس تعریف است که ما را از اختراع دوباره چرخ بینیاز میکند. در اینجا به تمامی ویژگیهای این کلاس نمیپردازم و تنها اشارهای به بخشهایی از این کلاس خواهم داشت. برای مطالعهی جزئیات بیشتر میتوانید به این لینک مراجعه کنید.
اولین موضوع برای استفاده از این کلاس include کردن header است:
#include <string>
حالا میتوان به member functionهایی که در اختیارمان قرار داده دسترسی داشته باشبم.
string::find
اگر در یک std::string obj به دنبال یک کارکتر یا رشته میگردید باید سراغ این تابع بیایید. در سادهترین حالت یک رشته یا کاراکتر به عنوان عبارتی که به دنبالش هستیم به آن میدهیم. در خروجی هم موقعیت (index) اولین جایی که این عبارت آمده را از آن میگیریم. اگر هم این عبارت پیدا نشد به ما string::npos بر میگرداند.
این تابع 4 شکل دارد:
size_t find (const string& str, size_t pos = 0) const noexcept; /*1) string*/ size_t find (const char* s, size_t pos = 0) const; /*2) c-string*/ size_t find (const char* s, size_t pos, size_type n) const; /*3) buffer */ size_t find (char c, size_t pos = 0) const noexcept; /*4) character */
string::substr
کاربرد این تابع در جدا کردن بخشی از یک string است. کافی است برایش مشخص کنیم رشتهی جدا شده از کجا(ایندکس کاراکتر) و به چه اندازهای(چند کارکتر) باید باشد تا آن را برای ما برگرداند.
string substr (size_t pos = 0, size_t len = npos) const;