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