ویرگول
ورودثبت نام
سید عمید قائم مقامی
سید عمید قائم مقامیبرنامه نویسی سیستم ویندوز و مهندسی معکوس و علاقه مند به آموزش.
سید عمید قائم مقامی
سید عمید قائم مقامی
خواندن ۳ دقیقه·۲ ماه پیش

آموزش برنامه نویسی قسمت 10 ( رشته ها و string در زبان C++):

رشته به مجموعه‎ای از کاراکترها گفته می‌شود. دو نوع رشته وجود دارند که به طور رایج در زبان برنامه‌نویسی ++C استفاده می‌شوند.

  • رشته‌هایی که شیء از نوع کلاس String هستند. این کلاس string کتابخانه استاندارد ++C است.

  • C-strings یعنی رشته‌های به سبک C

استرنگ در زبان C-strings

در زبان برنامه‌نویسی C مجموعه کاراکترها به شکل آرایه ذخیره می‌شدند. این وضعیت در زبان برنامه‌نویسی ++C نیز پشتیبانی می‌شود و از این رو C-strings نامیده می‌شوند.

C-strings آرایه‌هایی از نوع char هستند که با کاراکتر null یعنی ‎\0 خاتمه می‌یابند. مقدار ASCII کاراکتر null به صورت 0 است.

C-string چگونه تعریف می‌شود؟

در کد زیر str یک رشته است که 4 کاراکتر در خود نگهداری می‌کند:

char str[] = "++C";

با این که عبارت ++C سه کاراکتر دارد، کاراکتر null یعنی 0\ نیز به صورت خودکار به انتهای رشته اضافه می‌شود.

روش‌های جایگزین برای تعریف کردن یک رشته

در ادامه برخی روش‌های جایگزین تعریف رشته را مشاهده می‌کنید:

char str[4] = "C++"; char str[] = {'C','+','+','\0'}; char str[4] = {'C','+','+','\0'};

مانند آرایه‌ها لازم نیست که از همه فضای تخصیص‌ یافته برای رشته استفاده کنیم. به مثال زیر توجه کنید:

char str[100] = "++C";

مثال: استفاده از رشته‌های ++C برای خواندن یک کلمه
در ادامه برنامه‌ای را ملاحظه می‌کنید که برای خواندن یک رشته وارد شده از سوی کاربر استفاده می‌شود:

#include <iostream> using namespace std; int main() { char str[100]; cout << "Enter a string: "; cin >> str; cout << "You entered: " << str << endl; cout << "\nEnter another string: "; cin >> str; cout << "You entered: "<<str<<endl; return 0; }

خروجی:

Enter a string: C++ You entered: C++ Enter another string: Programming is fun. You entered: Programming

توجه کنید که در مثال دوم تنها عبارت Programming به جای Programming is fun نمایش می‌یابد. دلیل این امر آن است که عملگر استخراج << در C به صورت ()scanf عمل می‌کند و فاصله را به عنوان کاراکتر خاتمه دهنده تصور می‌کند.

مثال: رشته های C++ برای خواندن یک خط از متن

در ادامه برنامه‌ای را ملاحظه می‌کنید که کل یک خط را که از سوی کاربر وارد شده می‌خواند و نمایش می‌دهد.

#include <iostream> using namespace std; int main() { char str[100]; cout << "Enter a string: "; cin.get(str, 100); cout << "You entered: " << str << endl; return 0; }

خروجی:

Enter a string: Programming is fun. You entered: Programming is fun.

برای خواندن متن شامل فاصله‌های خالی از تابع cin.get استفاده می‌کنیم. این تابع دو آرگومان می‌گیرد. آرگومان اول آن رشته (نشانی عنصر اول رشته) و آرگومان دوم اندازه بیشینه آرایه است. در برنامه فوق str نام رشته و 100 بیشینه اندازه آرایه است.

شیء string

در ++C می‌توان یک شیء رشته نیز برای نگهداری رشته‌ها ایجاد کرد. برخلاف استفاده از آرایه‌های char، اشیای string هیچ طول ثابتی ندارند و می‌توانند بسته به نیاز بسط یابند.

مثال: رشته‌های ++C با استفاده از نوع داده string

#include <iostream> using namespace std; int main() { // Declaring a string object string str; cout << "Enter a string: "; getline(cin, str); cout << "You entered: " << str << endl; return 0; }

خروجی:

Enter a string: Programming is fun. You entered: Programming is fun.

در برنامه فوق یک رشته به نام str اعلان می‌شود. سپس رشته‌ای از کاربر درخواست می‌شود.

در ادامه به جای استفاده از تابع <<cin یا ()cin.get می‌توان خط متن وارد شده را با استفاده از ()getline دریافت کرد.

تابع ()getline یک جریان ورودی را به عنوان پارامتر اول می‌گیرد و cin و str مکان خطی هستند که باید ذخیره شود.

ارسال رشته‌ها به یک تابع

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

#include <iostream> using namespace std; void display(char *); void display(string); int main() { string str1; char str[100]; cout << "Enter a string: "; getline(cin, str1); cout << "Enter another string: "; cin.get(str, 100, '\n'); display(str1); display(str); return 0; } void display(char s[]) { cout << "Entered char array is: " << s << endl; } void display(string s) { cout << "Entered string is: " << s << endl; }

خروجی:

Enter a string: Programming is fun. Enter another string: Really? Entered string is: Programming is fun. Entered char array is: Really?

تنها تفاوت بین دو تابع در پارامترهای آن‌ها است. تابع ()display اولی یک آرایه char به عنوان پارامتر می‌گیرد و دومی یک رشته به عنوان پارامتر دریافت می‌کند. این فرایند به نام overloading تابع نامیده می‌شود.

Telegram: @CaKeegan
Gmail : amidgm2020@gmail.com

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