++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 را در حافظه نمایش میدهد.
در حقیقت نیازی به قرار دادن کارکتر 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 را پشتیبانی میکند.
ردیف |
توابع و توضیح آن |
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 با ما همراه باشید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.