cpp-05-06 - کار با آرایه ای از کاراکتر ها (string)

بازدید : 16

1

اشتراک

cpp-05-06 - کار با آرایه ای از کاراکتر ها (string)

توضیحات :

در این بخش یاد می‌گیریم که چطور یک رشته را هم با آرایه کاراکتری (Character Array) بسازیم و هم با استفاده از کلاس string.
این دو روش رفتار متفاوتی دارند و دانستن تفاوتشان در برنامه‌نویسی C++ بسیار مهم است.


۱. ساخت رشته با آرایهٔ کاراکتر (Character Array)

اگر بخواهید یک رشته را با آرایهٔ کاراکتر بسازید، باید حتماً اندازه آرایه را مشخص کنید یا در همان لحظه آن را مقداردهی اولیه (Initialize) کنید.

❌ کد اشتباه:

char s[]; s = {'a', 'b'};

در C++ این مجاز نیست، چون آرایه بدون اندازه تعریف شده.


روش صحیح (مقداردهی هنگام تعریف)

✔️ مثال:

char s1[] = "tabzmedia";

کامپایلر طول رشته را می‌شمارد و یک نال ترمینیتور \0 هم به انتهای آن اضافه می‌کند.

برای همین اگر این رشته ۹ کاراکتر باشد، سایز واقعی آرایه می‌شود ۱۰.


بررسی سایز رشته با sizeof

cout << sizeof(s1);

چون هر کاراکتر ۱ بایت است، sizeof دقیقاً تعداد کل بایت‌ها را برمی‌گرداند.


۲. تعریف آرایه کاراکتر با سایز مشخص

می‌توانید آرایه را بدون مقدار اولیه بسازید، اما باید سایز دقیق را بدهید:

char s2[3]; s2[0] = 'H'; s2[1] = 'i'; s2[2] = '\0'; // نال ترمینیتور الزامی

اگر نال ترمینیتور نگذارید، رشته در زمان چاپ به‌هم می‌ریزد.


۳. استفاده از کلاس string

راه ساده‌تر و امن‌تر برای کار با رشته‌ها:

string ss = "tabz media"; cout << ss;

در این روش دیگر با موضوعاتی مثل:

  • اندازه آرایه

  • نال ترمینیتور

  • محدودیت خانه‌ها

درگیر نمی‌شوید. کلاس string خودش همه چیز را مدیریت می‌کند.


توابع مهم string

می‌توانید تعداد کاراکترها را به چند روش بگیرید:

cout << ss.size(); cout << ss.length();

هردو یک مقدار برمی‌گردانند.
در پشت صحنه مقدار واقعی ذخیره‌سازی، یک خانه بیشتر است چون نال ترمینیتور وجود دارد.


چرا string امن‌تر است؟

کلاس string در واقع یک Wrapper روی آرایه کاراکتر است.
این یعنی:

  • خطاهای Out of Bound رخ نمی‌دهد

  • نیازی نیست اندازه را دستی مدیریت کنید

  • خواندن و نوشتن با آن ساده‌تر است

  • توابع آمادهٔ زیادی دارد


جمع‌بندی نکات کلیدی

  • برای تعریف آرایه کاراکتر باید اندازه مشخص باشد یا همان لحظه مقداردهی کنید.

  • همیشه آخر رشتهٔ کاراکتری یک \0 دارید.

  • کلاس string امن‌تر، راحت‌تر و پرامکانات‌تر است.

  • توابع size() و length() طول واقعی رشته را برمی‌گردانند (بدون احتساب نال ترمینیتور).

لطفا برای گذاشتن نظرات خود وارد شوید

نظرات شما عزیزان