برنامه نویسی ۸۵۸۵ بازدید

در این مقاله با شیوه کار با رشته های ++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";

مثال 1: استفاده از رشته‌های ++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 عمل می‌کند و فاصله را به عنوان کاراکتر خاتمه دهنده تصور می‌کند.

مثال 2: رشته‌های ++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 هیچ طول ثابتی ندارند و می‌توانند بسته به نیاز بسط یابند.

مثال 3: رشته‌های ++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?

در برنامه فوق، از کاربر خواسته می‌شود دو رشته وارد کند. این دو رشته به ترتیب در str و str1 ذخیره می‌شوند که str یک آرایه char و str1 یک شیء string است. سپس دو تابع ()display داریم که رشته را به string خروجی می‌دهند.

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

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۱۱ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«میثم لطفی» در رشته‌های ریاضیات کاربردی و مهندسی کامپیوتر به تحصیل پرداخته و شیفته فناوری است. وی در حال حاضر علاوه بر پیگیری علاقه‌مندی‌هایش در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار با مجله فرادرس همکاری دارد.