رشته ها در زبان C++ – آموزش زبان C++

۱۳۹۷-۰۸-۱۲
رشته ها در زبان C++ در زبان برنامه نویسی C++ دو نوع رشته وجود دارد: رشته کلاسیک و به سبک زبان C که از نوع char می باشد. رشته جدید که از نوع کلاس string معرفی شده در زبان C++ استاندارد می باشد. رشته به سبک زبان C این نوع رشته ها از زبان C وارد زبان C++ شده اند. این نوع رشته ها در ...

cpp strings 4388 رشته ها در زبان C++   آموزش زبان C++

رشته ها در زبان C++

در زبان برنامه نویسی C++ دو نوع رشته وجود دارد:

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

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

این نوع رشته ها از زبان C وارد زبان C++ شده اند. این نوع رشته ها در حقیقت یک آرایه تک بعدی از کاراکترها هستند که با کاراکتر ‘\۰’ پایان می پذیرند. بنابراین یک رشته خالی فقط شامل یک کاراکتر ‘\۰’ می باشد. به این کاراکتر، null می گویند. اعلان زیر یک آرایه را که شامل کاراکترهای کلمه “Hello” است، ایجاد می کند. برای این که یک آرایه بتواند کاراکتر null در انتهای خود داشته باشد باید طول آرایه یک واحد بیشتر از طول کاراکترها باشد.

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

دستور بالا را می توان به این صورت هم نوشت:

char greeting[] = "Hello";

شکل زیر نحوه قرار گیری این آرایه در حافظه را نشان می دهد:

cpp strings 4388 1 رشته ها در زبان C++   آموزش زبان C++

در حقیقت شما کاراکتر 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;
}

امتحان کنید

زمانی که کد بالا توسط کامپایلر زبان C++ اجرا شود، نتیجه زیر را تولید خواهد کرد:

Greeting message: Hello

به منظور دستکاری رشته هایی که با کاراکتر null خاتمه می یابند، توابع زیادی وجود دارند که برخی از آن ها را در جدول زیر مشاهده می کنید:

Sr.No. توضیحات
۱ strcpy(s1, s2)

رشته s2 را در رشته s1 کپی می کند (مشابه عملگر انتساب).

۲ strcat(s1, s2)

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

۳ strlen(s1)

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

۴ strcmp(s1, s2)

دو رشته را با هم مقایسه می کند. اگر هر دو مشابه باشند، مقدار ۰ بر میگرداند، اگر رشته اول (s1) کمتر از رشته دوم (s2) باشد، مقدار منفی بر میگرداند و اگر رشته اول (s1) از رشته دوم (s2) بزرگ تر باشد، مقدار بزرگتر از صفر بر میگرداند.

۵ strchr(s1, ch)

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

۶ 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

نوشته رشته ها در زبان C++ – آموزش زبان C++ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.