مهندس موفق الکترونیک

رشته‌ها در ++C

++C دو نوع روش برای بیان رشته‌ها دارد:

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

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

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

دستور زیر یک رشته حاوی واژه Hello را اعلان و مقداردهی می‌کند. برای ذخیره کارکتر null در انتهای آرایه، اندازه آرایه باید یک عدد بیشتر از تعداد کارکترهای واژه Hello باشد.

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

اگر قواعد مقداردهی اولیه آرایه را دنبال کنید، باید دستور بالا را به شکل زیر بنویسید.

char greeting[] = "Hello";

شکل زیر رشته تعریف شده در C++/C را در حافظه نمایش می‌دهد.

رشته‌ها در++ C

در حقیقت نیازی به قرار دادن کارکتر null در انتهای یک ثابت رشته‌ای نیست. هنگام مقداردهی آرایه، کامپایلر ++C به صورت خودکار ‘0\’ را در انتهای رشته قرار می‌دهد. اجازه دهید رشته بالا را چاپ کنیم.

#include <iostream>

using namespace std;

int main () {

   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '
#include <iostream>
using namespace std;
int main () {
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
cout << "Greeting message: ";
cout << greeting << endl;
return 0;
}
'
}; cout << "Greeting message: "; cout << greeting << endl; return 0; }

وقتی کد بالا کامپایل و اجرا شد، خروجی زیر بدست خواهد آمد.

Greeting message: Hello

++C مجموعه وسیعی از توابع برای دستکاری رشته‌های null-terminated را پشتیبانی می‌کند.

مطلب پیشنهادی:  تفاوت بین C و ++C

ردیف

توابع و توضیح آن

1

;(strcpy(s1, s2

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

2

;(strcat(s1, s2

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

3

;(strlen(s1

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

4

;(strcmp(s1, s2

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

5

;(strchr(s1, ch

یک اشاره گر به محل اولین وقوع کارکتر ch در رشته s1 را برمی‌گرداند.

6

;(strstr(s1, s2

یک اشاره گر به محل اولین وقوع رشته 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

منبع: ترجمه از سایت tutorialspoint.com

امیدواریم آموزش رشته‌ها در ++C براتون مفید واقع شده باشه. در جلسات بعدی آموزش ++C با ما همراه باشید.

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

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>
مطلب پیشنهادی:  مدیریت سیگنال‌ها در ++C

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *