به وب سایت حباب ها خوشامدید

رشته ها در سی پلاس پلاس

  /  C Plus Plus   /  رشته ها در C++

رشته ها در C++


در این آموزش ما به کاربرد رشته ها در C++ می پردازیم و روش استفاده از آنها در برنامه را یاد خواهیم گرفت.

ما از رشته ها ( string ) برای ذخیره متن ها در برنامه استفاده میکنیم که در مواقع مشخص در صورت نیاز ، آنها را فراخوانی کرده و استفاده می کنیم.

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

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

  1. روش آرایه‌ای (مشابه زبان برنامه نویسی سی)
  2. استفاده از کلاس String

ابتدا یک اشاره ای به روش آرایه ای مشابه زبان برنامه نویسی C میکنیم سپس میریم سراغ کلاس String…

روش آرایه‌ای در رشته‌ها از زبان سی شروع شده و در زبان سی پلاس پلاس نیز ادامه پیدا کرد.

در واقع رشته تعریف شده یک آرایه یک بعدی ( One-dimensional ) است.

زبان سی پلاس پلاس برای تشخیص پایان رشته از کاراکتر Null یا \0 استفاده می‌کند. این نوع رشته‌ها در سی پلاس پلاس به صورت زیر تعریف می‌شوند.

char str1[] = {'C','+','+','\0'};
cout << "String message: ";
cout << str1 << endl;

همانطور که در کد بالا مشاهده میکنید یک رشته به صورت آرایه تعریف کردیم و سپس آن رشته را چاپ کردیم. خروجی برنامه به صورت زیر می‌باشد:

String message: C++

اگر مقادیر به صورت کاراکتر باشد داخل تک کوتیشن ( ' ' ) قرار می دهیم مانند مثال بالایی که مشاهده کردید ، ولی اگر به صورت رشته ای باشد داخل دابل کوتیشن ( " " ) ، مانند مثال زیر:

char str[] = "Matin Boronsi";
char s[10] = "computer";

کلاس String در سی پلاس پلاس

برای تعریف و ساخت یک رشته در سی پلاس پلاس ما از متغیر string استفاده میکنیم مانند مثال زیر:

string example = "Hello";

همانطور که در مثال بالا مشاهده میکنید ما با استفاده از متغیر string مقدار Hello را در exmaple ریختیم ! و هرکجای برنامه متغیر example را فراخوانی کنیم ، برنامه مقدار Hello را برای ما برمیگرداند.

برای استفاده از رشته در سی پلاس پلاس شما باید کتاب خانه string را به برنامه خود اضافه کنید ، مانند مثال زیر:

// Include the string library
#include <string> 

// Create a string variable
string greeting = "Hello";

همانطور که در مثال بالا مشاهده میکنید برای استفاده از رشته ها در برنامه مان از کد زیر استفاده کردیم:

#include <string>

جهت فراخوانی کتابخانه string و استفاده از آن.

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

توابع C++ برای رشته ها
تابععملکرد
strcpy(s1,s2)رشته s2 را در رشته s1 کپی می کند
strcat(s1,s2)رشته s2 را به انتهای رشته s1 می چسباند
strlen(s1)طول رشته را بر میگرداند
strcmp(s1,s2)اگر s1 = s2 باشد مقدار صفر را بر میگرداند ، اگر s1<s2 باشد مقدار منفی و اگر s1>s2 مقدار مثبت بر میگرداند.
strchr(s1,ch)یک اشاره گر به اولین وقوع ch در رشته s1 بر میگرداند
strstr(s1,s2)یک اشاره گر به اولین وقوع s2 در رشته s1 بر میگرداند

پیوستگی رشته ها در C++

همبستگی رشته ها:

از عملگر پلاس ( + ) جهت متصل کردن رشته ها به هم استفاده میکنیم به مثال زیر دقت کنید:

string firstName = "Matin";
string lastName = "Boronsi";
string fullName = firstName + lastName;
cout << fullName;

در مثال بالا ما سه متغیر از نوع string داریم: firstName و lastName و fullName

فکر میکنم متوجه شدید ، بله درسته در متغیر سوم یعنی fullName ما مقادیر firstName به همراه lastName را با عملگر ( + ) بهم متصل کردیم و داخل متغیر fullName قرار دادیم.

سپس با استفاده از cout متغییر fullName را فراخوانی کردیم که خروجی یک چیزی شبیه به این خواهد بود:

MatinBoronsi

همانطور که خروجی بالا رو مشاهده میکنید مقادیر دو متغیر firstName و lastName بهم چسبیده برای اینکه یک فاصله بین "Matin" و "Boronsi" اضافه بکنیم باید به این شکل عمل کنیم:

string firstName = "Matin";
string lastName = "Boronsi";
string fullName = firstName +" "+ lastName;
cout << fullName;

به کد بالا دقت کنید تا متوجه تغیر آن بشوید.

تابع Append در C++

یک رشته در C++ در واقع یک شی ( object ) است که می توانید روی آن توابعی رو اجرا بکنید…

همچنین می توانید بجای عملگر ( + ) از تابع append() هم نیز استفاده کنید مانند مثال زیر:

string firstName = "Matin";
string lastName = "Boronsi";
string fullName = firstName.append(lastName);
cout << fullName;

خروجی کد بالا به این شکل خواهد بود:

Matin Boronsi

این به شما بستگی دارد که آیا می خواهید از + یا append() استفاده کنید. تفاوت عمده این دو در این است که تابع append() بسیار سریعتر است. با این حال ، استفاده از + ساده تر است.

اعداد در رشته ها

سی پلاس پلاس از عملگر  ( + ) برای جمع یا پیوند استفاده میکند و این دو بستگی به نوع متغیر های شما دارد ، در ادامه به مثال ها خوب دقت کنید تا فرق آن را متوجه شوید.

اگر دو عدد را با هم جمع کنید ، خروجی شامل مجموع آن دو عدد خواهد بود مانند مثال زیر:

int x = 10;
int y = 20;
int z = x + y;      // z will be 30 (an integer)

خروجی مقدار متغیر z عدد 30 خواهد بود.

اگر دو رشته را باهم جمع کنید ، خروجی همان 2 رشته خواهد بود به مثال زیر دقت کنید:

string x = "10";
string y = "20";
string z = x + y;   // z will be 1020 (a string)

خروجی مقدار متغیر z برابر خواهد بود با 1020 ، بله درست حدس زدید ، سی پلاس پلاس دیگر این متغیر ها را به چشم یک عدد در نظر نمیگیرد و آنها را رشته می داند.

اگر قصد داشته باشید یک رشته را با یک عدد جمع کنید ، با خطا مواجه می شوید مانند مثال زیر:

string x = "10";
int y = 20;
string z = x + y;

بدست آوردن طول رشته با استفاده از تابع Length در C++

برای بدست آوردن طول یک رشته از تابع length() استفاده میکنیم.

قابل توجه کند ذهن ها: در اینجا منظور ما از طول همان تعداد حروف تشکیل دهنده متن هست.

بعضی از دانشجو های عزیز بهم پیام میدن که ما مثلاً یک جا رو متوجه نشدیم بعد من بررسی که میکنم میبینم ، یک چیزی رو متوجه نشدن که حتی یک بچه دو ساله هم قادر به درک اون مطلب هست! پس ببخشید اگه از واژه کند ذهن استفاده کردم اینو برای خنگ ها گفتم نه شما که هوش بالایی دارید… بگذریم.

به مثال زیر دقت کنید:

string txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
cout << "The length of the txt string is: " << txt.length();

خروجی کد بالا تعداد حروف تشکیل دهنده رشته txt می باشد.

دسترسی به حروف تشکیل دهنده رشته ها در C++

شاید گاهی اوقات ما قصد داشته باشیم تا یک حرف را از درون یک رشته استخراج کنیم ، مثلاً "Hello" را در نظر بگیرید ، ما قصد داریم حرف دوم که e هست رو استخراج کنیم و نمایش بدیم ، به مثال زیر دقت کنید:

string myString = "Hello";
cout << myString[1];
// Outputs e

خروجی حرف e خواهد بود.

نکته: در تمام زبان های برنامه نویسی دنیا ، اگه اشتباه نکنم ، عدد شروع ما 0 هست یعنی در این کلمه اولین حرف ما 0 هست و دومین حرف 1 ، تا جایی که من اطلاع دارم در 100% زبان های برنامه نویسی روال به همین شکل هست.

پس اگر حرف دوم را میخواهید استخراج کنید باید عدد 1 را بدهید ، فرمول ریاضیش میشه این : n-1 اگر این فرمول رو جایی مشاهده نکردید تعجب نکنید ، چون اینو خودم نوشتم برای اینکه بعضی از دانشجو ها قاطی میکنند ، دیگه قاطی نکنند…

حالا اگر بخواهیم یک حرف را بجای یک حرف دیگه در یک کلمه قرار بدیم باید چیکار کنیم ؟

به مثال زیر دقت کنید:

string myString = "Hello";
myString[0] = 'J';
cout << myString;
// Outputs Jello instead of Hello

اگر یک درصد تفکر تحلیلی داشته باشید و کد بالا رو بخونید متوجه میشید باید چیکار کنید ، و فکر نمیکنم نیازی به توضیح دادن باشه.

رشته های ورودی کاربر در سی پلاس پلاس

خوب حالا ما قصد داریم که این دفعه با اجرای برنامه کاربر رشته مورد نظر خود را وارد کرده و ما یکسری عملیات روی آن انجام دهیم به مثال زیر دقت کنید:

برای دریافت مقادیر از کاربر ، از کد cin استفاده میکنیم.

مثال:

string firstName;
cout << "Type your first name: "; cin >> firstName; // get user input from the keyboard
cout << "Your name is: " << firstName;

// Type your first name: Matin
// Your name is: Matin

برنامه بالا ، نام کاربر را گرفته و نمایش می دهد ، حتماً کد ها را مطالعه کنید و تست کنید.

اگر حس میکنید به توضیحات بیشتر و مثال های بیشتر نیاز دارید یا اینکه نکته ای رو بنده نگفتم حتماً کامنت بزارید ، در غیر این صورت کامنت نزاشتن های شما به معنی کامل و جامع بودن این آموزش هست که هست !

 


مدیر حباب ها

متین برونسی مدیر و مؤسس حباب ها می باشد ، او علاقه مند به دنیای کامپیوتر و زبان های برنامه نویسی است... از تخصص های او می توان به برنامه نویسی frontend و backend اشاره کرد (full stack developer)... او تجربیات زیادی در زبان های برنامه نویسی مختلف دارد... ، او گاهاً تجربیات خود را در قالب آموزش در وب سایت حباب ها منتشر می کند...

دیدگاه
  • Asal 07/23/2020 09:44

    ببخشید دستورای شرطی واسه رشته ها چطوریه؟
    یعنی مثلا اگه حرف پنجم رشته r بود فلان کنه

ارسال یک نظر