آموزش C++ رشته ها

زبان C++ دو نوع رشته ارائه می دهد 

  • رشته character به سبک زبان برنامه نویسی C
  • رشته از نوع کلاس string با استاندارد C++

رشته character به سبک زبان برنامه نویسی C

این نوع رشته همچنان در زبان برنامه نویسی C++ پشتیبانی می شود و در واقع یک آرایه تک بعدی از کاراکترها است که توسط کاراکتر ‘\0’ خاتمه می یابد. بنابراین یک رشته خالی تنها شامل کاراکتر ‘\0’ است.
 در زیر مقداردهی یک رشته شامل کاراکتر"hello"  نشان داده شده است. برای نگه داشتن کاراکتر ‘\0’  مقدار آرایه یکی بیشتر از تعداد کاراکترهای کلمه "hello" است.

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

اگر طبق نکات گفته شده برای مقداردهی آرایه ها پیش بروید می توانید دستور بالا را به صورت زیر بنویسید:

char greeting[] = "Hello";

در شکل زیر می توانید نحوه قرار گرفتن آرایه بالا را در حافظه مشاهده کنید:
  نحوه قرار گرفتن آرایه بالا را در حافظه
در حقیقت شما یک کاراکتر null را درانتهای یک رشته ثابت قرار نمی دهید و کامپایلر به طور خودکار در زمان مقداردهی آرایه این کار را انجام می دهد. سعی کنید رشته فوق را چاپ کنید:

 

#include <iostream>

using namespace std;

int main () {

   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

   cout << "Greeting message: ";
   cout << greeting << endl;

   return 0;
}

پس از کامپایل و اجرای کد بالا نتیجه زیر نمایش داده خواهد شد 
 

Greeting message: Hello

C++ طیف گسترده‌ای از توابع را برای کنترل رشته های خالی ارائه داده است که در جدول زیر می توانید آن را مشاهده کنید:

ردیف توضیحات
1

strcpy(s1, s2);

رشته s2 را در s1 کپی می کند.

2

strcat(s1, s2);

رشته s2 را به انتهای رشته s1 میچسباند.

3

strlen(s1);

طول رشته s1 را بر میگرداند.

4

strcmp(s1, s2);

در صورتی که رشته s1 و s2 برابر باشند مقدار 0 و اگر s2>s1 باشد مقداری کمتر از 0 و اگر s1>s2 باشد مقداری بیشتر از 0 را بر می گرداند.

5

strchr(s1, ch);

محل وچود اولین کاراکتر ch را در رشته s مشخص و بر می گرداند. اگر کاراکتر مورد نظر در رشته وجود نداشته باشد مقداری که توسط این تابع برگردانده می شود برابر با صفر است.

6

strstr(s1, s2);

s2 رشته ای است که باید در رشته s1 جستجو شود . اگر s2 در s1 پیدا شود محل اولین وقوع آن توسط تابع برگردانده می شود ولی اگر s2 در s1 وجود نداشته باشد مقدار صفر برگردانده خواهد شد.

در مثال زیر نحوه استفاده از چند تابع بالا را مشاهده می کنید

#include <iostream>
#include <cstring>

using namespace std;

int main () {

   char str1[10] = "Hello";
   char str2[10] = "World";
   char str3[10];
   int  len ;

   // copy str1 into str3
   strcpy( str3, str1);
   cout << "strcpy( str3, str1) : " << str3 << endl;

   // concatenates str1 and str2
   strcat( str1, str2);
   cout << "strcat( str1, str2): " << str1 << endl;

   // total lenghth of str1 after concatenation
   len = strlen(str1);
   cout << "strlen(str1) : " << len << endl;

   return 0;
}

پس از کامپایل و اجرای کد بالا نتیجه زیر نمایش داده می شود 
 

strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10
کلاس string در زبان C++
کتابخانه استانداردC++   کلاس های string مختلفی را فراهم می‌کند که تمام عملیات ذکر شده در بالا را پشتیبانی می کند و علاوه بر آن قابلیت های بسیار بیشتری نیز ارائه می دهد. به مثال زیر توجه کنید 
#include <iostream>
#include <string>

using namespace std;

int main () {

   string str1 = "Hello";
   string str2 = "World";
   string str3;
   int  len ;

   // copy str1 into str3
   str3 = str1;
   cout << "str3 : " << str3 << endl;

   // concatenates str1 and str2
   str3 = str1 + str2;
   cout << "str1 + str2 : " << str3 << endl;

   // total length of str3 after concatenation
   len = str3.size();
   cout << "str3.size() :  " << len << endl;

   return 0;
}

 پس از کامپایل و اجرای کد بالا نتیجه زیر نمایش داده می شود 

str3 : Hello
str1 + str2 : HelloWorld
str3.size() :  10

 

برای درج نظر و یا طرح سوالات خود لطفا در سایت ثبت نام کنید و یا وارد سایت شوید

نظرات کاربران

برای این مطلب تاکنون نظری ارسال نشده است. شما اولین نفر باشید