رشته ها (Strings) در برنامه نویسی C++ :

ما در فصول قبل با آرایه ها آشنا شدیم. در برنامه نویسی C++ نوع خاصی برای رشته ها یا همان String وجود ندارد و در این مورد باید از آرایه ای از کاراکترها استفاده کنیم. البته در Visual C++ میشه از فضای نامی std در مورد رشته ها استفاده کرد که کار را راحتتر می کند اما چون ما در Borland برنامه نویسی می کنیم نمی توانیم مستقیما با یک متغیر از نوع string کار کنیم .

قبلا یادگرفتیم که اعداد و کاراکترها را چگونه در آرایه قرار دهیم. برای استفاده از رشته ها باید از آرایه دو بعدی با نوع کاراکتر استفاده کنیم. به این نکته توجه نمایید که در زبان برنامه نویسی C++، رشته ها را بین ” ” و کاراکترها را بین ‘ ‘ قرار خواهیم داد. در زیر به نحوه تعریف یک رشته می پردازیم :

asf

همانطور که در بالا می بینیم، نحوه تعریف یک رشته مانند تعریف یک آرایه است و از قوانین آرایه ها تبعیت می کند با این تفاوت که اگر مقدار بصورت رشته باشد باید آنرا در بین ” ” قرار دهیم و اگر مقادیر بصورت کاراکتر باشند آنها را در بین ‘ ‘ و بصورت مجموعه مقداردهی خواهیم کرد .

نکته) در مقداردهی یک String باید بدانیم که انتهای آن آرایه با تهی یا Null مشخص می شود. یعنی در خط اول از کد یالا یک آرایه بوجود خواهد آمد که اولین خانه آن حرف p و دومین خانه آن حرف r و علی آخر که در نهایت یکی مانده به آخرین خانه حرف g و آخرین خانه Null یا می باشد .

در خط دوم ما Stringی را با طول ۱۰ تعریف و مقداردهی کرده ایم، اما عبارت computer از ۷ حرف تشکیل شده و آخرین خانه هم شامل برای تعیین انتهای String خواهد بود که ۲ خانه بلا استفاده باقی خواهد ماند .

در خط سوم چونکه ما رشته را بصورت کاراکتری در نظر گرفته ایم باید بصورت دستی مقدار در انتهای مقداردهی String وارد نماییم تا به اینصورت کامپایلر متوجه پایان آن شود .

نکته) در تعریف و مقدار دهی یک String باید طول آرایه را همیشه یک واحد بیشتر از طول مورد نیاز انتخاب نماییم و دلیل آن مشخص نمودن انتهای آرایه با استفاده از کاراکتر تهی () است .

dd

برای خواندن و نوشتن Stringها می توانیم از دستورات ورودی خروجی cin ,cout استفاده کنیم، اما ممکن است در این مورد دچار مشکل شویم و آن مشکل این است که اگر ما نامی را بعنوان یک متغیر رشته ای مثل alireza aria را در نظر بگیریم در میان رشته خود ناگزیر از کاراکتر تهی یا همان استفاده می کنیم که در اینصورت تابع cin آنرا بعنوان انتهای رشته در نظر گرفته و aria را دریافت نمی کند و لذا در ورود این متغیر String با استفاده از دستور cin به مشکل بزرگی بر می خوریم. پس دستور cin کاراکترهای فاصله (Space) و Enter را بعنوان انتهای یک آرایه از کاراکترها در نظر می گیرد .

برای رفع مشکل دریافت متغیری از نوع String، از تابع cin.get() استفاده می کتیم. تابع cin.get() آرایه ای از کاراکترها را می گیرد با این تفاوت که انتهای آرایه یا همان متغیر String را با فشار دادن دکمه Enter مشخص می نماید، پس با استفاده از این تابع مشکل ورود یک نام کامل برطرف می شود .

ccd

همانطور که در کد C++ با مشاهده می کنید تابع cin.get() دارای دو پارامتر ورودی است. اولین آرگومان شامل نام آرایه یا همان متغیر String است بهمراه اندیس عنصر مورد نظر و دومین آرگومان مربوط به بیشترین طول متغیر است. دقت کنید که این مقدار تخمینی از بیشترین طول ممکن برای یک نام کامل است و ضرورتی ندارد که نامها حتما هم مقدار با عدد مشخص شده باشد .

در کاملترین حالت از بکارگیری تابع cin.get() می توان آرگومان سومی نیز برای آن در نظر گرفت که مشخص کننده کاراکتر پایانی آرایه است، یعنی با نوشتن آرگومان سوم، کاربر برای کامپایلر تعیین می کند که با رسیدن به کدام کاراکتر انتهای آرایه یا همان String را مشخص نماید. بعنوان مثال در کد زیر از نقطه بعنوان کاراکتر پایانی بهره گرفته ایم، مشخص کرده ایم که فقط ۱۵ کاراکتر اول را در نظر بگیرد. یعنی اگر نام از ۱۵ کاراکتر بیشتر شد از کاراکتر ۱۵ به بعد را در نظر نگیرد و اگر کمتر از ۱۵ شد با فشار دادن دکمه نقطه از کیبرد پایان آنرا مشخص نماید .

nb