رشته های ++C – راهنمای جامع


در این مقاله با شیوه کار با رشته های ++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 کاراکتر در خود نگهداری میکند:
1char str[] = "++C";
با این که عبارت ++C سه کاراکتر دارد، کاراکتر null یعنی 0\ نیز به صورت خودکار به انتهای رشته اضافه میشود.
روشهای جایگزین برای تعریف کردن یک رشته
در ادامه برخی روشهای جایگزین تعریف رشته را مشاهده میکنید:
1char str[4] = "C++";
2
3char str[] = {'C','+','+','\0'};
4
5char str[4] = {'C','+','+','\0'};
مانند آرایهها لازم نیست که از همه فضای تخصیص یافته برای رشته استفاده کنیم. به مثال زیر توجه کنید:
1char str[100] = "++C";
مثال 1: استفاده از رشتههای ++C برای خواندن یک کلمه
در ادامه برنامهای را ملاحظه میکنید که برای خواندن یک رشته وارد شده از سوی کاربر استفاده میشود:
1#include <iostream>
2using namespace std;
3int main()
4{
5 char str[100];
6 cout << "Enter a string: ";
7 cin >> str;
8 cout << "You entered: " << str << endl;
9 cout << "\nEnter another string: ";
10 cin >> str;
11 cout << "You entered: "<<str<<endl;
12 return 0;
13}
خروجی
1Enter a string: C++
2You entered: C++
3
4Enter another string: Programming is fun.
5You entered: Programming
توجه کنید که در مثال دوم تنها عبارت Programming به جای Programming is fun نمایش مییابد. دلیل این امر آن است که عملگر استخراج << در C به صورت ()scanf عمل میکند و فاصله را به عنوان کاراکتر خاتمه دهنده تصور میکند.
مثال 2: رشتههای ++C برای خواندن یک خط از متن
در ادامه برنامهای را ملاحظه میکنید که کل یک خط را که از سوی کاربر وارد شده میخواند و نمایش میدهد.
1#include <iostream>
2using namespace std;
3int main()
4{
5 char str[100];
6 cout << "Enter a string: ";
7 cin.get(str, 100);
8 cout << "You entered: " << str << endl;
9 return 0;
10}
خروجی
Enter a string: Programming is fun. You entered: Programming is fun.
برای خواندن متن شامل فاصلههای خالی از تابع cin.get استفاده میکنیم. این تابع دو آرگومان میگیرد. آرگومان اول آن رشته (نشانی عنصر اول رشته) و آرگومان دوم اندازه بیشینه آرایه است. در برنامه فوق str نام رشته و 100 بیشینه اندازه آرایه است.
شیء string
در ++C میتوان یک شیء رشته نیز برای نگهداری رشتهها ایجاد کرد. برخلاف استفاده از آرایههای char، اشیای string هیچ طول ثابتی ندارند و میتوانند بسته به نیاز بسط یابند.
مثال 3: رشتههای ++C با استفاده از نوع داده string
1#include <iostream>
2using namespace std;
3int main()
4{
5 // Declaring a string object
6 string str;
7 cout << "Enter a string: ";
8 getline(cin, str);
9 cout << "You entered: " << str << endl;
10 return 0;
11}
خروجی
Enter a string: Programming is fun. You entered: Programming is fun.
در برنامه فوق یک رشته به نام str اعلان میشود. سپس رشتهای از کاربر درخواست میشود.
در ادامه به جای استفاده از تابع <<cin یا ()cin.get میتوان خط متن وارد شده را با استفاده از ()getline دریافت کرد.
تابع ()getline یک جریان ورودی را به عنوان پارامتر اول میگیرد و cin و str مکان خطی هستند که باید ذخیره شود.
ارسال رشتهها به یک تابع
روش ارسال رشتهها به توابع مشابه روش ارسال آرایهها به یک تابع است.
1#include <iostream>
2using namespace std;
3void display(char *);
4void display(string);
5int main()
6{
7 string str1;
8 char str[100];
9 cout << "Enter a string: ";
10 getline(cin, str1);
11 cout << "Enter another string: ";
12 cin.get(str, 100, '\n');
13 display(str1);
14 display(str);
15 return 0;
16}
17void display(char s[])
18{
19 cout << "Entered char array is: " << s << endl;
20}
21void display(string s)
22{
23 cout << "Entered string is: " << s << endl;
24}
خروجی
Enter a string: Programming is fun. Enter another string: Really? Entered string is: Programming is fun. Entered char array is: Really?
در برنامه فوق، از کاربر خواسته میشود دو رشته وارد کند. این دو رشته به ترتیب در str و str1 ذخیره میشوند که str یک آرایه char و str1 یک شیء string است. سپس دو تابع ()display داریم که رشته را به string خروجی میدهند.
تنها تفاوت بین دو تابع در پارامترهای آنها است. تابع ()display اولی یک آرایه char به عنوان پارامتر میگیرد و دومی یک رشته به عنوان پارامتر دریافت میکند. این فرایند به نام overloading تابع نامیده میشود. برای مطالعه بخش بعدی روی لینک زیر کلیک کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامه نویسی C++
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- آموزش ++C — راهنمای شروع یادگیری
- حلقه while و do…while در ++C — راهنمای کاربردی
==
عالییی بود ممنون