آرایه های کاراکتری (رشته)
يکی از کاربرد های گسترده آرایه به صورت آرایه کاراکتری است. یک آرایه کاراکتری را به عنوان رشته ای از کاراکترها می توان در نظر گرفت. رشته (string)‌ به مجموعه ای از کاراکترها گفته می شود که برای ذخیره متن استفاده می شود.

مثال. دستور زير آرايه کاراکتری با اندازه 10 ايجاد می کند. اين آرايه می تواند رشته ای با حداکثر طول 9 را ذخيره کند.

char UserName[10];

C++ انتهای ‍يک رشته را با کاراکتر null می شناسد. کاراکتر null کاراکتر با کد اسکی صفر است که به صورت '\0' نوشته می شود. بنابراين يک محل از آرايه کاراکتری برای ذخيره کاراکتر null بايد کنار گذاشته شود.

مثال. برای ذخيره يک رشته 10 کاراکتری نياز به آرايه کاراکتری با اندازه 11 کاراکتر است.

چون رشته در آرايه به صورت کاراکتری ذخيره می شود که به null ختم می شود تمام چيزی که برای تعريف يک رشته نياز است اشاره گری به ابتدای آن است. همانطور که گفته شد اسم آرايه اشاره گری به اولين عنصر آن است. بنابراين تنها به اسم آرايه برای دسترسی به رشته ای که درون آرايه ذخيره شده نياز است. کتابخانه استاندارد ++C شامل توابعی برای کارکردن با رشته ها است. برای ارسال رشته ای به اين توابع بايد از نام آرايه استفاده شود. برای دريافت و نمايش متغيرهای رشته ای توسط دستورات cin و cout هم به همين صورت می توان عمل کرد.

cin >> UserName;
cout << UserName;

البته خواندن رشته به صورت فوق روش خيلی خوبی نيست زيرا اگر متن ورودی شامل فضای خالی باشد آنرا بعنوان جداکننده مقادير می شناسد. علاوه بر اين اگر طول رشته وارد شده بيشتر از فضای درنظر گرفته شده در متغير رشته ای باشد باعث بروز مشکل در برنامه می شود.

روش ديگر برای دريافت يک رشته از ورودی استفاده از متد getline شیء cin است. در اين حالت متن ورودی می تواند شامل فضاهای خالی هم باشد.

مثال. برنامه زير متنی با حداکثر طول 24 کاراکتر را از ورودی دريافت می کند و به متغير name اختصاص می دهد. کاراکتر NULL در انتها اضافه می شود.

#include <iostream.h>
int main() {
   char name[25];
   cout << "Please enter your name \n";
   cin.getline(name,25);
   cout << "Hello " << name << endl;
   return 0;
}
مقداردهی اولیه آرایه کاراکتری

مشابه آرايه های ديگر آرايه های کاراکتری را می توان هنگام اعلان مقداردهی اوليه کرد. می توان کاراکترها را مجزا درون آکولاد نوشت يا از يک ثابت رشته ای که درون علامت (") قرار دارد استفاده کرد. در حالت دوم کامپايلر اتوماتيک کاراکتر null را در انتهای رشته درج می کند.

char string[10] = { 'h', 'e', 'l', 'l', 'o', '\0' };
char string[10] = "hello";

وقتی آرايه توسط رشته "hello" مقداردهی می شود در حافظه به صورت زير ذخيره می شود:
آرايه کاراکتري

اگر اندازه آرايه ذکر نشود کامپايلر اندازه آرايه را با توجه به تعداد کاراکترهای رشته ای محاسبه می کند. در اعلان زير آرايه با اندازه 6 کاراکتر مقداردهی می شود.

char string[] = "hello";

توابع C++ که روی رشته ها کار می کنند طول رشته را با پيدا کردن کاراکتر null محاسبه می کنند. يکی از مشکلاتی است که ممکن است در برنامه بروز کند. اين است که کاراکتر null گم بشود در نتيجه برنامه رشته را تا رسيدن به کاراکتر با کد اسکی صفر در حافظه گسترش می دهد.






پیوندها